LINUX.ORG.RU

История изменений

Исправление den73, (текущая версия) :

What is wanted here is something like the following substitution property [6] If for each object o 1 of type S there is an object o 2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o 1 is substituted for o 2, then S is a subtype of T.

Вот что написано в первоисточнике. Из этого определение не следует нерелевантность ни одного из моих примеров. Придумать программу, которая печатает имя класса, размер экземпляра или вызывает виртуальный метод, предоставляется читателю.

Более того, виртуальные методы по этому определению вовсе запрещены (потомок _не_может быть подтипом в этом смысле, если виртуальный метод используется в программе по существу и как-то переопределяет предка. Даже переопределять абстрактный метод запрещено, поскольку поведение программы меняется).

И практический вывод отсюда - нет смысла вообще говорить о принципе Лисковой, он не нужен.

Исходная версия den73, :

What is wanted here is something like the following substitution property [6] If for each object o 1 of type S there is an object o 2 of type T such that for all programs P defined in terms of T, the behavior of P is unchanged when o 1 is substituted for o 2, then S is a subtype of T.

Вот что написано в первоисточнике. Из этого определение не следует нерелевантность ни одного из моих примеров. Придумать программу, которая печатает имя класса, размер экземпляра или вызывает виртуальный метод, предоставляется читателю.

Более того, виртуальные методы по этому определению вовсе запрещены (потомок _не_может быть подтипом в этом смысле, если виртуальный метод используется в программе по существу и как-то переопределяет предка. Даже переопределять абстрактный метод запрещено, поскольку поведение программы меняется).

И практический вывод отсюда - нет смысла вообще говорить о принципе Лискова, он не нужен.