Если в программе S является подтипом T, то объекты типа T в программе могут быть заменены на объекты типа S без нарушения работоспособности программы.
Ключевые моменты:
- Сохранение поведения: Подтип должен вести себя так же, как его базовый тип, с точки зрения внешнего наблюдателя.
- Инварианты: Инварианты базового класса должны сохраняться в подклассах.
- Постусловия: Постусловия (условия, которые должны быть истинны после выполнения метода) подкласса должны быть такими же или более сильными, чем постусловия базового класса.
- Предусловия: Предусловия (условия, которые должны быть истинны перед выполнением метода) подкласса должны быть такими же или более слабыми, чем предусловия базового класса.
Пример на Python:
python
Этот принцип важен для обеспечения корректности наследования и полиморфизма, делая код более надежным и предсказуемым.