Введение в наследование в C#
В программе часто появляются близкие сущности. У всех пользователей есть имя и возраст, у студента к тем же данным добавляется оценка, у сотрудника - должность или оклад. Копировать одни и те же поля в каждый класс неудобно и легко ошибиться при правке.
Наследование связывает два класса: базовый хранит общую часть, потомок расширяет ее своими членами. Общее поведение описывают один раз в базе, а различия оставляют в специализированных типах.
Так проще поддерживать модель: исправление в базовом классе автоматически относится ко всем потомкам, которые его используют. Иерархия отражает отношение «является разновидностью»: студент является пользователем с дополнительными свойствами, а не отдельной несвязанной сущностью.
Наследование не заменяет продуманный дизайн. Им пользуются, когда типы действительно разделяют общую основу и отличаются предсказуемым набором дополнений. Случайное дублирование без общей базы или, наоборот, слишком глубокая цепочка без нужды усложняют код без выигрыша.