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

Если S является подтипом T, то объекты типа T в программе могут быть заменены объектами типа S без изменения каких-либо дополнительных свойств этой программы.

Когда дочерний класс не может выполнять те же действия, что и его родительский класс, это может привести к ошибкам.

Если вы имеете класс и создаете другой класс из него, он становится родителем, а новый класс становится дочерним. Дочерний класс должен быть в состоянии сделать все, что может сделать родительский класс. Этот процесс называется Наследованием.

Дочерний класс должен быть способен обрабатывать те же самые запросы и выдавать тот же самый результат, что и родительский класс, или он может выдать результат, который имеет тот же самый тип.

Рисунок показывает, что родительский класс приносит кофе (это может быть любой тип кофе). Для дочернего класса приемлемо приносить капучино, потому что это специфический тип кофе, но НЕ приемлемо доставлять воду.

Если дочерний класс не соответствует этим требованиям, это означает, что дочерний класс полностью изменяется и нарушает этот принцип.

Цель

Этот принцип направлен на обеспечение последовательности, чтобы родительский класс или его дочерний класс могли использоваться одинаковым образом, и были взаимозаменяемы, без каких-либо ошибок.