Я читал о запечатанном ключевом слове в C#. Я не могу вспомнить последний раз, когда я наследую стандартную библиотеку. В C++ я помню, наследуя интерфейс std, который typedef несколько типов и использовал некоторые из моих параметров. Но это 1) Тривиальный 2) ИнтерфейсСлучай для наследования нетривиального класса?
Сверху моей головы я не помню какой-либо класс, который унаследовал, у которого не было виртуальной функции, ожидающей наследования. Может ли кто-нибудь рассказать мне о ситуации, когда вам нужно было наследовать нетривиальный класс, который не был интерфейсом?
Я мог бы даже сказать, что это хорошее правило для большого пальца не наследовать класс, если у него нет виртуальных функций. Это хорошее эмпирическое правило?
ПРИМЕЧАНИЕ: Я использую оператор SomeClass & SomeClass() {return m_someClass; } в случае, когда мне нужно передать мой объект в качестве другого класса. Это работает хорошо.
Ключевой концепцией OOD является то, что данные и функциональные возможности собираются вместе для формирования объектов, которые представляют объект, который они моделируют. Полиморфизм - это продолжение этой концепции, не более того. –
Ключевая концепция ООП заключается в том, что никто не может согласиться с тем, что это такое. Что касается полиморфизма, являющегося расширением этой концепции, я предполагаю, что вы можете иметь полиморфизм без «сбора данных и функциональности вместе для формирования объектов». –
Тем не менее, основная цель наследования заключается в том, чтобы облегчить полиморфизм, а не представлять объекты реального мира (просто посмотрите на Принцип замещения Лискова, чтобы увидеть, как использование ООП для моделирования объектов реального мира просто не работает). – Smashery