Я думаю, что большинство из того, что нужно здесь сказать, уже было сказано людьми, у которых гораздо больше опыта, чем у меня.Однако, как тот, кто перешел с VB6 / VBA на бесконечный и удивительный мир истинного наследования, доступный в .net, я могу сказать, что отговаривать новичка рассматривать его как конечное решение не обязательно плохо.
Когда я впервые начал исследовать эту идею, я обнаружил, что с помощью наследования можно делать разные интересные вещи.Но в итоге я получил довольно плохой код, сложные в обслуживании иерархии классов и общий беспорядок.Это выглядит почти волшебным решением для новичка (и даже более того для тех, кто пережил боль VB6 / VBA в течение многих лет).Реальность такова, что, как и шаблоны проектирования, наследование часто используется «потому что я могу» вместо «потому что мне нужно».
Держу пари, автор намеревался донести до сведения, что наследование, часто рассматриваемое как решение «первого порядка» для людей с меньшим опытом, ДЕЙСТВИТЕЛЬНО должно использоваться только тогда, когда это правильное решение.И что легко думать, что это может быть правильным решением в неправильных обстоятельствах.
Может быть заманчиво использовать наследование в качестве средства, облегчающего работу кодирования.В мои первые годы изучения vb.net у меня, конечно, были некоторые трудности, и часто наследование от класса, который был борьбой за создание, казалось привлекательным решением проблемы создания другой разновидности этого сложного кода.Конечно, для тех, кто учится, сложный код сегодня - предпочтительный код завтрашнего дня.
Наследование является основной концепцией в ООП.Но этим легко злоупотреблять и / или применять ненадлежащим образом.Тщательный дизайн иерархии классов имеет решающее значение для правильного использования концепции наследования, и, как представляется, три наиболее точно представляют собой случаи, в которых сдерживание и делегирование являются предпочтительными способами достижения цели.
Но говорить, что наследование бесполезно, явно абсурдно.
Хороший способ изучить интерфейс / базовый класс / моделирование наследования см. В самой платформе .net.Из проводника объектов можно изучить модель наследования, поскольку она применяется к основным компонентам, которые мы используем каждый день.