Ответ на пост «Советы тем, кто реально хочет стать программистом»6
Принцип подстановки Лисков на паровозиках: у васть есть базовый класс Паровозик. От него наследуются (т.е. развивают идею Паровозика), четырехколесный Светлячок, восьмиколесный Муравей, шестнадцатиколесный Верблюд и восьмиколесный Стрела. При этом у вас есть водонапорная станция, которая умеет заправлять водой, станция с углем и рельсы. Каким бы ни был паровозик, он ездит по рельсам, станции умеют заправлять его водой и углем, при этом они не задумываются, что это за паровозик. Потом вы придумываете электровоз, но он не может развивать идею паровозика, поэтому вы решаете, что сделаете базовый класс Поезд, от которого наследуется Паровозик и Электровозик, с Поездом умеют взаимодействовать рельсы, с Паровозиком - водонапорная станция и станция с углем, а ЛЭП умеют взаимодействовать с Электровозиком.
Кажется, кто-то умный сказал, что если ты не можешь ребенку объяснить сложную вещь, ты ее не понимаешь.
з.ы. не претендую, но, кажись, и понятно и соответствует сути, не?
А классическое объяснение на примере квадрата и прямоугольника уже не котируется?
У квадрата есть одна длина стороны. У прямоугольника есть две длины сторон. Кажется логичным унаследовать прямоугольник от квадрата, добавив вторую длину стороны - и именно это запрещается принципом, т.к. такое наследование сломает код, который работает с квадратами (например, вычисляет площадь), поскольку открывает возможность под видом квадрата подсунуть прямоугольник, и тогда площадь посчитается неправильно.
Принцип говорит, что класс-наследник к классу-родителю должен относиться как "is a" ("является"). Т.е. наследовать квадрат от прямоугольника корректно (квадрат является прямоугольником - это правда), а наследовать прямоугольник от квадрата некорректно (прямоугольник не обязательно является квадратом).
Если совсем коротко и просто, то "любой экземпляр класса-наследника должен подходить для использования в любом месте, где требуется экземпляр класса-родителя". Т.е. наследование не должно привносить несовместимых изменений.