Использование наследования: таксономия таксономии
Мощь наследования - это следствие его универсальности. Правда и то, что временами оно наносит вред, заставляя многих авторов вводить ограничения на механизм. Понимая эти опасения, а иногда и разделяя их, отбросим случайные сомнения и страхи и научимся радоваться наследованию во всех его законных вариантах, к исследованию которых мы теперь и переходим.
Дадим обзор правильного использования наследования:
- наследование подтипов (subtype inheritance);
- наследование вида (view inheritance);
- наследование с ограничением (restriction inheritance);
- наследование с расширением (extension inheritance);
- наследование с функциональной вариацией (functional variation inheritance);
- наследование с вариацией типа (type variation inheritance);
- наследование с конкретизацией (reification inheritance);
- структурное наследование (structure inheritance);
- наследование реализации (implementation inheritance);
- льготное наследование (facility inheritance) с двумя специальными вариантами: наследование констант и абстрактной машины (черного ящика) (constant inheritance и machine inheritance).
Некоторые из этих категорий (подтипы, вид, реализация, конкретизация, льготы) приводят к специфическим проблемам, обсуждаемым в отдельных разделах.