#18 - Наследование классов

#18 - Наследование классов

Наследование является одной из основных концепций объектно ориентированного программирования. За урок вы изучите написание, а также использование классов наследников в языке С#.

Видеоурок

Наследование является одним из ключевых понятий ООП. За счёт наследования можно создать один общий класс (класс родитель) и создать множество других классов (классы наследники), что будут наследовать все поля, методы и конструкторы из главного класса.


За чем использовать наследование?

Предположим что у нас есть один большой класс «Транспорт». В классе описываются базовые характеристики для всех транспортных средств:

  • поля: скорость, вес, запас хода и тому подобное;
  • методы: получение информации из полей, установка новых значений;
  • конструктор: пустой и по установке всех полей.


На основе класса мы спокойно можем создать объект легковой машины, объект грузовика, объект самолета и так далее. У всех объектов будут одинаковые характеристики и методы. 


Мы явно понимаем, что у объекта машина и самолёт будут разные поля и характеристики. Как можно поступить:

  1. Можно создать два отдельных класса: «Car» и «Airplane». В каждом классе будут все методы, поля и конструкторы повторно переписанные из класса «Транспорт», а также будут новые методы, что важны только для конкретного класса;
  2. Можно создать два класса наследника: «Car» и «Airplane». Оба класса будут наследовать всё от класса «Транспорт» и при этом будут содержать свои дополнительные функции. Таким образом повторения кода не будет и код станет меньше и чище.


Создание классов наследников

Для создания класса наследника требуется создать класс и указать наследование от главного класса.


Пример класса наследника:

class Transport {
 public float speed;
}

class Auto : Transport {
	private string model;
 
	public Auto (float speed, string model) {
		this.speed = speed;
		this.model = model;
		Console.Write("Speed is: " + speed + ", model is - " + model);
	}
}

class MainClass {

	public static void Main(String[] args) {
		Auto bmw = new Auto(250.5f, "X3");
		Auto mercedes = new Auto(270f, "C63 AMG");
	}
}

Как вы можете заметить, у нас есть одна общая переменная speed. Поскольку модификатор доступа у неё protected, то доступ к переменной мы имеем внутри класса Transport, а также внутри всех классов наследников.


Для создания наследования мы прописали ключевое слово : после имени класса и указали какой класс будет родительским.


Если необходимо из класса наследника получить данные из родительского класса, то всегда можно обращаться к значению base.

Исходный код

Весь код будет доступен после подписки на проект!

Онлайн редактор кода

Загрузка...

Задание к уроку

Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям

Большое задание по курсу

Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца

Также стоит посмотреть

Программа на C# .NET Windows Forms
7 уроков
Уроки C# под Unity 5 для начинающих
9 уроков
Изучение ASP.NET Core MVC. Создание сайтов на C#
10 уроков
Изучение C#, ASP.NET и создание Windows программ
Комментарии для сайта Cackle