• Всякий экземпляр наследника можно рассматривать как экземпляр родителя, а обратное невер-
но.
• В тексте наследника всегда упоминается его родитель, но не наоборот. Это, на самом деле,
является важным свойством ОО-метода, вытекающим из принципа Открыт-Закрыт, согласно
которому класс не “знает” списка своих наследников и других собственных потомков.
Наследование инварианта
Хотелось бы указать инвариант класса RECTANGLE, который говорил бы, что число сторон прямо-
угольника равно четырем и что длины сторон последовательно равны side1, side2, side1 и side2.
У класса POLYGON также имеется инвариант, который применим и к его наследнику:
Правило наследования инварианта
Инвариант класса является конъюнкцией утверждений из его раздела invariant и свойств инвари-
антов его родителей (если таковые имеются).
Поскольку у родителей класса могут быть свои родители, то это правило рекурсивно: в резуль-
тате полный инвариант класса получается как конъюнкция собственного инварианта и инвариантов
классов всех его предков.
Это правило отражает одну из важных характеристик наследования: сказать, что B наследует
A - это утверждать, что каждый экземпляр B является также экземпляром A. Вследствие этого
всякое выраженное инвариантом ограничение целостности, применимое к экземплярам A, будет
также применимо и к экземплярам B.
В нашем примере второе предложение инварианта POLYGON утверждает, что число сторон долж-
но быть не менее трех, оно является следствием предложения из инварианта класса RECTANGLE,
которое требует, чтобы сторон было ровно четыре.