Хелпикс

Главная

Контакты

Случайная статья





Переходим к программированию.



 

Т20_Полиморфизм.

 

Сам термин полиморфизм можно перевести как «много форм». А если говорить простыми словами, полиморфизм – это различная реализация однотипных действий. Классическая фраза, которая коротко объясняет полиморфизм – «Один интерфейс, множество реализаций». Приведу примеры из жизни. В автомобилях есть рулевое колесо. Это колесо является интерфейсом между водителем и автомобилем, который позволяет поворачивать автомобиль. Механическая реализация руля у автомобилей может быть разная, но при этом результат получается одинаковым – колесо вправо – автомобиль вправо, и наоборот. Еще один пример. Клавиатура является интерфейсом ввода между пользователем и ПК. При нажатии одной и той же клавиши на различных клавиатурах результат получаем одинаковый, но при этом сама реализация нажатия клавиши может быть разная (емкостная, контактная и т. д. ).

Переходим к программированию.

С полиморфизмом к нам прибавляются еще несколько понятий: виртуальный/абстрактный метод, переопределение метода.

Виртуальный метод – это метод, который МОЖЕТ быть переопределен в классе-наследнике. Такой метод может иметь стандартную реализацию в базовом классе.

Абстрактный метод – это метод, который ДОЛЖЕН быть реализован в классе-наследнике. При этом, абстрактный метод не может иметь своей реализации в базовом классе (тело пустое), в отличии от виртуального.

Переопределение метода – это изменение реализации метода, установленного как виртуальный (в классе наследнике метод будет работать отлично от базового класса).

В качестве системы, предоставляющей тот самый интерфейс, в программировании может выступать класс и интерфейс. Здесь мы поговорим о классах. Есть класс, в нем объявлен виртуальный или абстрактный метод. От этого класса наследуются еще несколько классов, и в каждом из них по-разному реализуется тот самый виртуальный/абстрактный метод. Получается, объекты этих классов имеют метод с одинаковым именем, но с разной реализацией. В этом и есть полиморфизм.

Например, есть класс Геометрическая Фигура, и в нем объявлен метод Draw(), который будет рисовать фигуру. От этого класса наследуются классы Треугольник, Прямоугольник, Окружность. В них реализуется метод для рисования (понятно, что реализация рисования каждой фигуры разная). В итоге мы можем создать объекты этих классов, и у всех будет метод Draw(), который будет рисовать соответствующую фигуру.

Для чего вообще нужен полиморфизм?

Полиморфизм позволяет писать более абстрактные, расширяемые программы, один и тот же код используется для объектов разных классов, улучшается читабельность кода. Полиморфизм позволяет избавить разработчика от написания, чтения и отладки множества if-else/switch-case конструкций.



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.