Другие языки программирования и технологии

Зaчeм нyжнo нacлeдoвaниe

в языкax пpoгpaммиpoвaния?
Kalju Sirman
Kalju Sirman
1 441
Наследование - один из вариантов реализации полиморфизма. Самый модный, но - с точки зрения качества кода - далеко не самый лучший. И именно наследование совершенно не нужно: например, композиция решает те же самые задачи без проблем наследования.

Множественное наследование, появившееся в C++, создало больше проблем, чем решило. В последующих ООП-языках от полноценного наследования C++ остался только кастрированный вариант примитивного линейного наследования, единственное назначение которого - уменьшение дублирования кода. Полноценный же полиморфизм реализуется через интерфейсы.

N.B. При наличии в языке типажей (trait), решающих проблему дублирования кода, наследование полностью теряет какой-либо смысл.

P.S. Проблема наследования - цепочки предков. Они многократно ухудшают понимание кода (чтобы понять работу класса, приходится анализировать код всех классов - его предков) и делают код хрупким (любое изменение в классе - предке может сломать работу классов - потомков).
Д*
Дидар *kazahstan*
95 981
Лучший ответ
Леха. Дети есть? Откажись
Max Sladkiy
Max Sladkiy
53 415
Наследование — это инструмент, позволяющий описать новый класс на основе уже существующего с частично или полностью заимствованной функциональностью. Это мощный инструмент переиспользования кода и создания собственных иерархий классов. Можно сказать, что на основе одного класса строится новый класс, путем добавления новых полей и методов.
Phantom Pain
Phantom Pain
87 295
Роман Ледяев В итоге получается одна сложная программа, погружающаяся внутрь другой. Так вроде?
Александр Кузнецов То есть мы выучили определение, но зачем вообще нужно это объектно-ориентированное программирование, так и не поняли.
флудер проснулся
Чтобы сделать класс кирпича, а на базе него сделать класс блок кирпичей и уже из блоков строить. Получится класс комнаты, коридора, кладовки, туалета, кухни. И потом лепить уже из них квартиры. А из квартир дома.
Вселенная устроена аналогично. От нутра атомов и дальше.
DC
Dato Chareqishvili
23 558
Тестерев Николай Извините, а как это наследование решает задачи инкапсуляции? С помощью наследования можно получить расширенные модификации базового кирпича, а как квартиру-то?
По моему это в ООП один из важных этапов
чтобы не писать одинаковый код 100 раз, а также иметь возможность модифицировать программу изменяя класс родителя или добавляя что-то внутрь