Другие языки программирования и технологии
Зaчeм нyжнo нacлeдoвaниe
в языкax пpoгpaммиpoвaния?
Наследование - один из вариантов реализации полиморфизма. Самый модный, но - с точки зрения качества кода - далеко не самый лучший. И именно наследование совершенно не нужно: например, композиция решает те же самые задачи без проблем наследования.
Множественное наследование, появившееся в C++, создало больше проблем, чем решило. В последующих ООП-языках от полноценного наследования C++ остался только кастрированный вариант примитивного линейного наследования, единственное назначение которого - уменьшение дублирования кода. Полноценный же полиморфизм реализуется через интерфейсы.
N.B. При наличии в языке типажей (trait), решающих проблему дублирования кода, наследование полностью теряет какой-либо смысл.
P.S. Проблема наследования - цепочки предков. Они многократно ухудшают понимание кода (чтобы понять работу класса, приходится анализировать код всех классов - его предков) и делают код хрупким (любое изменение в классе - предке может сломать работу классов - потомков).
Множественное наследование, появившееся в C++, создало больше проблем, чем решило. В последующих ООП-языках от полноценного наследования C++ остался только кастрированный вариант примитивного линейного наследования, единственное назначение которого - уменьшение дублирования кода. Полноценный же полиморфизм реализуется через интерфейсы.
N.B. При наличии в языке типажей (trait), решающих проблему дублирования кода, наследование полностью теряет какой-либо смысл.
P.S. Проблема наследования - цепочки предков. Они многократно ухудшают понимание кода (чтобы понять работу класса, приходится анализировать код всех классов - его предков) и делают код хрупким (любое изменение в классе - предке может сломать работу классов - потомков).
Леха. Дети есть? Откажись
Наследование — это инструмент, позволяющий описать новый класс на основе уже существующего с частично или полностью заимствованной функциональностью. Это мощный инструмент переиспользования кода и создания собственных иерархий классов. Можно сказать, что на основе одного класса строится новый класс, путем добавления новых полей и методов.

Роман Ледяев
В итоге получается одна сложная программа, погружающаяся внутрь другой. Так вроде?
Александр Кузнецов
То есть мы выучили определение, но зачем вообще нужно это объектно-ориентированное программирование, так и не поняли.
флудер проснулся
Чтобы сделать класс кирпича, а на базе него сделать класс блок кирпичей и уже из блоков строить. Получится класс комнаты, коридора, кладовки, туалета, кухни. И потом лепить уже из них квартиры. А из квартир дома.
Вселенная устроена аналогично. От нутра атомов и дальше.
Вселенная устроена аналогично. От нутра атомов и дальше.
Тестерев Николай
Извините, а как это наследование решает задачи инкапсуляции? С помощью наследования можно получить расширенные модификации базового кирпича, а как квартиру-то?
По моему это в ООП один из важных этапов
чтобы не писать одинаковый код 100 раз, а также иметь возможность модифицировать программу изменяя класс родителя или добавляя что-то внутрь
Похожие вопросы
- Нyжнo ли не пpoгpaммиcтy
- Зaчeм пpoгpaммиcтy нyжeн
- Чем мoжнo и нyжнo кopмить гoдoвалoгo малыша? Не давнo oтняли oт гpyди
- Чтo нyжнo, чтoбы поймать бeгeмoтa?
- Kaк вы cчитаете нyжнo ли ребёнку говорить "нет"?) Важна ли мера?)
- Кто в семье обязан cледить за семейным бюджeтoм и нyжнo ли его вecти?
- Сколькo нyжнo нынче жeнщине poдить дeтeй, чтоб cчитaтьcя мaтepью-геpoиней?
- Что нyжнo дeлaть ecли
- Чтo нyжнo делать