Specialization.
The child class is a special case of the parent class; in
other words, the child class is a subtype of the parent class.
Specification.
The parent class defines behavior that is implemented in the
child class but not in the parent class.
Construction.
The child class makes use of the behavior provided by the parent
class, but is not a subtype of the parent class.
Generalization.
The child class modifies or overrides some of the methods of the
parent class.
Extension.
The child class adds new functionality to the parent class, but
does not change any inherited behavior.
Limitation.
The child class restricts the use of some of the behavior inherited
from the parent class.
Variance.
The child class and parent class are variants of each other, and the
class-subclass relationship is arbitrary.
Combination.
The child class inherits features from more than one parent class.
This is multiple inheritance and will be the subject of a later chapter.