534

Ответ на пост «Советы тем, кто реально хочет стать программистом»⁠⁠6

Принцип подстановки Лисков на паровозиках: у васть есть базовый класс Паровозик. От него наследуются (т.е. развивают идею Паровозика), четырехколесный Светлячок, восьмиколесный Муравей, шестнадцатиколесный Верблюд и восьмиколесный Стрела. При этом у вас есть водонапорная станция, которая умеет заправлять водой, станция с углем и рельсы. Каким бы ни был паровозик, он ездит по рельсам, станции умеют заправлять его водой и углем, при этом они не задумываются, что это за паровозик. Потом вы придумываете электровоз, но он не может развивать идею паровозика, поэтому вы решаете, что сделаете базовый класс Поезд, от которого наследуется Паровозик и Электровозик, с Поездом умеют взаимодействовать рельсы, с Паровозиком - водонапорная станция и станция с углем, а ЛЭП умеют взаимодействовать с Электровозиком.

Кажется, кто-то умный сказал, что если ты не можешь ребенку объяснить сложную вещь, ты ее не понимаешь.

з.ы. не претендую, но, кажись, и понятно и соответствует сути, не?

Лига программистов

2.4K постов12K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

46
Автор поста оценил этот комментарий

А классическое объяснение на примере квадрата и прямоугольника уже не котируется?

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


Принцип говорит, что класс-наследник к классу-родителю должен относиться как "is a" ("является"). Т.е. наследовать квадрат от прямоугольника корректно (квадрат является прямоугольником - это правда), а наследовать прямоугольник от квадрата некорректно (прямоугольник не обязательно является квадратом).

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

раскрыть ветку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества