C#: наследование в действии

Как известно, наследование необходимо для реиспользования кода, что облегчает следование принципу Don’t Repeat Yourself (DRY). Если тезисно, то наследование можно описать следующим образом: — это механизм создания нового класса на основании уже существующего; — старый класс является предком либо родительским классом (super class); — новый класс является наследником или дочерним классом (sub class); — дочерний класс включает в себя методы и переменные родительского класса.

Теперь давайте создадим консольное приложение, используя язык программирования C#. Назовем это приложение InheritanceAndPolymorphism и добавим туда 2 класса: ClassA и ClassB:

Мы можем видеть, что класс А является пустым, а в класс B были добавлены 2 метода и переменная x, имеющая значение 100. В результате в главном методе Program.cs мы можем написать следующий код:

Конечно же, такой код приведет к ошибке:

Причина этой ошибки очевидна: в классе А отсутствует вызываемый нами метод. Но этот метод существует у класса B. Разве было бы не чудесно, если бы мы получили для класса B доступ ко всему программному коду из класса A? Вопрос риторический. Но тогда давайте поменяем описание первого класса:

После того, как программа выполнится, вывод будет следующим:

ClassB Display1

Теперь ClassA будет наследовать публичные методы из ClassB, а это то же самое, как будто бы мы скопировали весь код из класса B в класс A. Таким образом все, что объект класса B может делать, может делать и объект класса A. ClassA в данном случае дочерний, а ClassB — родительский.

Что важно запомнить: как ребенок похож на родителя, наследуя его черты, так и дочерний класс наследует параметры родительского класса.

По материалам статьи «Diving in OOP (Day 2): Polymorphism and Inheritance (Inheritance)»: - https://www.codeproject.com/Articles/772238/Diving-in-OOP-Day-Polymorphism-and-Inheritance.