|
|||
Переходим к программированию.
Т20_Полиморфизм.
Сам термин полиморфизм можно перевести как «много форм». А если говорить простыми словами, полиморфизм – это различная реализация однотипных действий. Классическая фраза, которая коротко объясняет полиморфизм – «Один интерфейс, множество реализаций». Приведу примеры из жизни. В автомобилях есть рулевое колесо. Это колесо является интерфейсом между водителем и автомобилем, который позволяет поворачивать автомобиль. Механическая реализация руля у автомобилей может быть разная, но при этом результат получается одинаковым – колесо вправо – автомобиль вправо, и наоборот. Еще один пример. Клавиатура является интерфейсом ввода между пользователем и ПК. При нажатии одной и той же клавиши на различных клавиатурах результат получаем одинаковый, но при этом сама реализация нажатия клавиши может быть разная (емкостная, контактная и т. д. ). Переходим к программированию. С полиморфизмом к нам прибавляются еще несколько понятий: виртуальный/абстрактный метод, переопределение метода. Виртуальный метод – это метод, который МОЖЕТ быть переопределен в классе-наследнике. Такой метод может иметь стандартную реализацию в базовом классе. Абстрактный метод – это метод, который ДОЛЖЕН быть реализован в классе-наследнике. При этом, абстрактный метод не может иметь своей реализации в базовом классе (тело пустое), в отличии от виртуального. Переопределение метода – это изменение реализации метода, установленного как виртуальный (в классе наследнике метод будет работать отлично от базового класса). В качестве системы, предоставляющей тот самый интерфейс, в программировании может выступать класс и интерфейс. Здесь мы поговорим о классах. Есть класс, в нем объявлен виртуальный или абстрактный метод. От этого класса наследуются еще несколько классов, и в каждом из них по-разному реализуется тот самый виртуальный/абстрактный метод. Получается, объекты этих классов имеют метод с одинаковым именем, но с разной реализацией. В этом и есть полиморфизм. Например, есть класс Геометрическая Фигура, и в нем объявлен метод Draw(), который будет рисовать фигуру. От этого класса наследуются классы Треугольник, Прямоугольник, Окружность. В них реализуется метод для рисования (понятно, что реализация рисования каждой фигуры разная). В итоге мы можем создать объекты этих классов, и у всех будет метод Draw(), который будет рисовать соответствующую фигуру. Для чего вообще нужен полиморфизм? Полиморфизм позволяет писать более абстрактные, расширяемые программы, один и тот же код используется для объектов разных классов, улучшается читабельность кода. Полиморфизм позволяет избавить разработчика от написания, чтения и отладки множества if-else/switch-case конструкций.
|
|||
|