Этот пример в значительной степени избит до смерти, но рассмотрим возможность «квадрат / прямоугольник» или «круг / эллипс». Предположим, у вас есть базовый класс Rectangle, который определяет объект с длиной и шириной. Если у вас есть класс Square, который наследует класс Rectangle, в его установщике / получателе будет правило, которое потребует, чтобы любое изменение длины или ширины изменило его аналог. Эти требования к размерам усиливают предварительные условия, потому что прямоугольник, заменяющий квадрат, будет пропускать эти требования к размерам. Предположим, вы изменили наследование так, чтобы Rectangle наследовал квадрат, и вы ослабили бы условия поста, ослабив требования к размерам, чтобы Rectangle мог вести себя независимо.
Тем не менее, если вы удалите возможность изменения размеров, принцип подстановки верен, потому что если ни прямоугольник, ни квадрат не могут изменить размеры, то они имеют одинаковые условия до и после независимо от наследования. Оба имеют длину, оба имеют ширину, и ни один не может изменить эти значения.
ссылка: Википедия - http://en.wikipedia.org/wiki/Liskov_substitution_principle