0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: c#, наследование, inheritance</p>
1
<p>Теги: c#, наследование, inheritance</p>
2
<p>Как известно, наследование необходимо для реиспользования кода, что облегчает следование принципу<strong>Don’t Repeat Yourself</strong>(DRY). Если тезисно, то наследование можно описать следующим образом: - это механизм создания нового класса на основании уже существующего; - старый класс является предком либо родительским классом (super class); - новый класс является наследником или дочерним классом (sub class); - дочерний класс включает в себя методы и переменные родительского класса.</p>
2
<p>Как известно, наследование необходимо для реиспользования кода, что облегчает следование принципу<strong>Don’t Repeat Yourself</strong>(DRY). Если тезисно, то наследование можно описать следующим образом: - это механизм создания нового класса на основании уже существующего; - старый класс является предком либо родительским классом (super class); - новый класс является наследником или дочерним классом (sub class); - дочерний класс включает в себя методы и переменные родительского класса.</p>
3
<p>Теперь давайте создадим консольное приложение, используя язык программирования C#. Назовем это приложение<strong>InheritanceAndPolymorphism</strong>и добавим туда 2 класса: ClassA и ClassB:</p>
3
<p>Теперь давайте создадим консольное приложение, используя язык программирования C#. Назовем это приложение<strong>InheritanceAndPolymorphism</strong>и добавим туда 2 класса: ClassA и ClassB:</p>
4
<p>Мы можем видеть, что класс А является пустым, а в класс B были добавлены 2 метода и переменная<em>x</em>, имеющая значение 100. В результате в главном методе Program.cs мы можем написать следующий код:</p>
4
<p>Мы можем видеть, что класс А является пустым, а в класс B были добавлены 2 метода и переменная<em>x</em>, имеющая значение 100. В результате в главном методе Program.cs мы можем написать следующий код:</p>
5
<p>Конечно же, такой код приведет к ошибке:</p>
5
<p>Конечно же, такой код приведет к ошибке:</p>
6
<p>Причина этой ошибки очевидна: в классе А отсутствует вызываемый нами метод. Но этот метод существует у класса B. Разве было бы не чудесно, если бы мы получили для класса B доступ ко всему программному коду из класса A? Вопрос риторический. Но тогда давайте поменяем описание первого класса:</p>
6
<p>Причина этой ошибки очевидна: в классе А отсутствует вызываемый нами метод. Но этот метод существует у класса B. Разве было бы не чудесно, если бы мы получили для класса B доступ ко всему программному коду из класса A? Вопрос риторический. Но тогда давайте поменяем описание первого класса:</p>
7
<p>После того, как программа выполнится, вывод будет следующим:</p>
7
<p>После того, как программа выполнится, вывод будет следующим:</p>
8
<p>Теперь ClassA будет наследовать публичные методы из ClassB, а это то же самое, как будто бы мы скопировали весь код из класса B в класс A. Таким образом все, что объект класса B может делать, может делать и объект класса A. ClassA в данном случае дочерний, а ClassB - родительский.</p>
8
<p>Теперь ClassA будет наследовать публичные методы из ClassB, а это то же самое, как будто бы мы скопировали весь код из класса B в класс A. Таким образом все, что объект класса B может делать, может делать и объект класса A. ClassA в данном случае дочерний, а ClassB - родительский.</p>
9
<p><strong>Что важно запомнить</strong>: как ребенок похож на родителя, наследуя его черты, так и дочерний класс наследует параметры родительского класса.</p>
9
<p><strong>Что важно запомнить</strong>: как ребенок похож на родителя, наследуя его черты, так и дочерний класс наследует параметры родительского класса.</p>
10
<p>По материалам статьи "Diving in OOP (Day 2): Polymorphism and Inheritance (Inheritance)": -<em>https://www.codeproject.com/Articles/772238/Diving-in-OOP-Day-Polymorphism-and-Inheritance</em>.</p>
10
<p>По материалам статьи "Diving in OOP (Day 2): Polymorphism and Inheritance (Inheritance)": -<em>https://www.codeproject.com/Articles/772238/Diving-in-OOP-Day-Polymorphism-and-Inheritance</em>.</p>
11
11