For effective object-oriented design the consistency of this relationship should be preserved. Each redefinition in a subclass should be checked for consistency with the original definition in an ancestor class. A subclass should preserve the requirements of an ancestor class. Requirements that cannot be preserved indicate a design error and perhaps inheritance is not appropriate. Consistency due to inheritance is fundamental to object-oriented design.
Semantic inheritance denotes inheritance of object semantics, ie of objects themselves.
This kind of inheritance is known from semantic data models, where it is used to model one object that appears in several roles in an application. Saake et al concentrate on the semantic form of inheritance. Behavioural or semantic inheritance expresses the role of an object within a system. Wegner, however, believes code inheritance to be of more practical value. He suggests these are rarely compatible with each other and are often negatively correlated.