Средний
6 уроков
Курс
Основы C#
В этом видеокурсе вы ознакомитесь с основами C#

#4 — Полиморфизм и Абстракция

Привет! На сегодняшнем видеоуроке мы разберемся с таким важным принципом ООП как полиморфизм, а затем, напоследок, затронем тему абстракции.

Полиморфизм: перегрузка метода

Полиморфизм имеет множество видов и реализаций. И начнем мы с самого простого – перегрузки функции. Давайте рассмотрим пример класса function с перегружаемой операцией ui.

Перегружаемые функции (методы, операции) – это функции, которые имеют одинаковое имя, но разное количество или типы аргументов, различную реализацию.

Перегрузка функций относится к Ad hoc полиморфизму, то есть у нас есть один интерфейс и различное множество реализаций. Если бы функции ui имели одинаковые тела, то это уже был бы параметрический полиморфизм, где для разных аргументов используется один и тот же блок кода.

Код с классом Function можно посмотреть под описанием видеоурока.

Полиморфизм совместно с механизмом абстракции

Мы знаем, что под класс место в памяти компьютера не выделяется, но зато оно выделяется под объекты, который этот класс описывает. Проблема в том, что не всегда класс описывает объект.

Иногда бывают абстрактные классы, которые не описывают конкретный объект, а содержат некоторое количество базовых свойств, присущих какой-то группе объектов. Для того чтобы упростить работу с механизмом наследования, используется механизм абстракции. Этот механизм запрещает создание экземпляров базового класса и позволяет использование абстрактных методов.

Абстрактный метод – это метод, который не содержит реализации внутри класса, где он был объявлен, но должен быть переопределён во всех других классах, производных от базового. Общая конструкция для создания абстрактного класса и метода:

Теперь необходимо переопределить абстрактные методы в производных классах. Для этого используется конструкция overrite:

Код с классом Shape (абстрактные функции) можно посмотреть под описанием видеоурока.

Переопределение методов в независимости от механизма абстракции

Теперь научимся переопределять не абстрактные функции. Возьмем пример из предыдущего пункта, но теперь сделаем его не абстрактным.

Чтобы переопределять метод не абстрактного класса в производных классах, используется модификатор virtual. Он говорит о том, что мы можем переопределять эту функцию, но не обязаны это делать во всех производных классах. Общая конструкция:

Код с классом Shape (не абстрактные функции) можно посмотреть под описанием видеоурока.

Теперь подведем небольшой итог. Сегодня мы рассмотрели такой вид полиморфизма, как Ad hoc, разобрались в механизме абстракции и научились переопределять метод в независимости от этого механизма.

В конце давайте дадим четкое определение полиморфизма. Полиморфизм – это механизм, который позволяет использовать одно и то же имя (метод) для реализации технически разных задач.

На этом наш видеоурок завершится. До скорой встречи на следующем занятии!

Приятного всем просмотра! Учитесь с удовольствием! Всегда ваш LoftBlog.

Код с классом Function:

Код с классом Shape (абстрактные функции):

Код с классом Shape (не абстрактные функции):

Материалы к уроку:
Делись:

Оставь комментарий!

Добавить комментарий

Рекомендуемые курсы