Наследование С#
Наследование C#
В этом руководстве мы узнаем о наследовании C# и его типах с помощью примеров.
В C# наследование позволяет нам создавать новый класс из существующего класса. Это ключевая особенность объектно-ориентированного программирования (ООП).
Класс, из которого создается новый класс, известен как базовый класс (родительский или суперкласс). И новый класс называется производным классом (дочерним или подклассом)
Производный класс наследует поля и методы базового класса. Это помогает повторно использовать код в C#.
<час>Как выполнить наследование в C#?
В C# мы используем 07
символ для выполнения наследования. Например,
01
Здесь мы наследуем производный класс Dog. из базового класса Animal . Собака class теперь может обращаться к полям и методам Animal класс.<рисунок>
<час>Пример:наследование C#
10пре>Вывод
28В приведенном выше примере мы создали подкласс Dog. из суперкласса Animal . Обратите внимание на утверждения,
32Здесь мы используем лабрадор (объект Dog) для доступа к имени и отображение() Животное учебный класс. Это возможно, потому что производный класс наследует все поля и методы базового класса.
Кроме того, мы получили доступ к названию поле внутри метода Dog класс.
<час>является отношениями
В C# наследование — это отношение «является». Мы используем наследование только в том случае, если между двумя классами существует отношение «есть». Например,
- Собака является животным
- Яблоко является фруктом
- Автомобиль это транспортное средство
Мы можем вывести Собаку от Животное учебный класс. Точно так же Apple из фруктов класс и автомобиль из автомобиля класс.
<час>защищенные элементы в наследовании C#
Когда мы объявляем поле или метод как 17
, к нему можно получить доступ только из того же класса и его производных классов.
Пример:защищенные участники в наследовании
40
Вывод
59
В приведенном выше примере мы создали класс с именем Animal. . Класс включает защищенный метод eat() .
Мы получили Собаку класс из класса Animal учебный класс. Обратите внимание на заявление,
61
Поскольку 22
можно получить доступ из производных классов, мы можем получить доступ к eat() метод из Dog класс.
Типы наследования
Существуют следующие типы наследования:
1. Одиночное наследование
При одиночном наследовании один производный класс наследуется от одного базового класса.
<рисунок>2. Многоуровневое наследование
При многоуровневом наследовании производный класс наследуется от базового, а затем тот же производный класс действует как базовый класс для другого класса.
<рисунок>3. Иерархическое наследование
При иерархическом наследовании несколько производных классов наследуются от одного базового класса.
<рисунок>4. Множественное наследование
При множественном наследовании один производный класс наследуется от нескольких базовых классов. C# не поддерживает множественное наследование. Однако мы можем добиться множественного наследования через интерфейсы.
<рисунок>5. Гибридное наследование
Гибридное наследование представляет собой комбинацию двух или более типов наследования. Сочетание многоуровневого и иерархического наследования является примером гибридного наследования.
<рисунок> <час>Переопределение метода в наследовании C#
Если один и тот же метод присутствует и в базовом классе, и в производном классе, метод производного класса переопределяет метод базового класса. В C# это называется переопределением метода. Например,
73
Вывод
80
В приведенном выше примере функция eat() метод присутствует как в базовом классе, так и в производном классе.
Когда мы вызываем eat() с помощью Собаки объект лабрадор ,
90
метод внутри Dog называется. Это потому, что метод внутри Dog переопределяет тот же метод внутри Animal .
Обратите внимание, мы использовали 30
и переопределить с методами базового класса и производного класса соответственно. Здесь
40
- позволяет переопределить метод производным классом58
- указывает, что метод переопределяет метод из базового класса
ключевое слово base в наследовании C#
В предыдущем примере мы видели, что метод производного класса переопределяет метод базового класса.
Но что, если мы также хотим вызвать метод базового класса?
В этом случае мы используем 62
ключевое слово для вызова метода базового класса из производного класса.
Пример:ключевое слово base в наследовании C#
107
Вывод
115
В приведенном выше примере функция eat() метод присутствует как в базовом классе Animal и производный класс Dog . Обратите внимание на заявление,
120
Здесь мы использовали 71
ключевое слово для доступа к методу Animal класс из класса Собака класс.
Важность наследования в C#
Чтобы понять важность наследования, давайте рассмотрим ситуацию.
Предположим, мы работаем с правильными многоугольниками, такими как квадраты, прямоугольники и так далее. И мы должны найти периметр этих многоугольников на основе входных данных.
1. Поскольку формула для вычисления периметра является общей для всех правильных многоугольников, мы можем создать RegularPolygon класс и метод calculatePerimeter() для расчета периметра.
134
2. И унаследовать Square и Прямоугольник классы из RegularPolygon учебный класс. Каждый из этих классов будет иметь свойства для хранения длины и количества сторон, поскольку они разные для всех многоугольников.
147
Мы передаем значение length и стороны для вычисления периметра() для вычисления периметра.
Именно так наследование делает наш код пригодным для повторного использования и делает его более интуитивно понятным.
Пример:важность наследования
159
Вывод
166
В приведенном выше примере мы создали RegularPolygon. класс, в котором есть метод вычисления периметра правильного многоугольника.
Здесь Квадрат и Прямоугольник наследовать от RegularPolygon .
Формула вычисления периметра общая для всех, поэтому мы повторно использовали функцию calculatePerimeter(). метод базового класса.
А поскольку формула для вычисления площади отличается для разных фигур, мы создали отдельный метод внутри производного класса для вычисления площади.
Язык C