Similar presentations:
ООП. Часть 3. Полиморфизм
1. ООП. Часть 3. Полиморфизм.
Самое колдунское колдунство.Очень уличная магия.
2. Что такое полиморфизм?
Способность функции выбирать правильную версию метода в зависимостиот типа вызывающего объекта.
Возможность создавать функции для работы с произвольным классом из
иерархии.
Самая черная магия из всех.
3. Переменная базового класса
OneTwo
Three
var a: One; <- переменная базового класса.
4.
5.
6. Переменная базового класса
OneTwo
Three
var a: One = new One(); норм
var b: One = new Two(); норм
var c: One = new Three(); норм
var d: Two = new Two(); норм
var e: Two = new Three(); норм
var f: Two = new One(); !ОШИБКА!
7. Вызов нужной реализации метода.
При наследовании класс-сыночек получает от класса-папашкивсего его поля и методы. Класс-сыночек можно перегрузить
(переписать) методы класса папашки.
А если у нас ситуация:
var b: One = new Two();
b.Say();
То из какого класса вызовется метод Say(): Из One или Two??
8.
9.
10.
11. Про вызов нужной реализации функции
Вообще возможно 2 выхода из ситуации, изложеннойвыше.
1) зарешает транслятор (раннее связывание). В этом
случае метод, который будем вызывать, определится
типом ПЕРЕМЕННОЙ.
2) вопрос решится на этапе выполнения программы
(позднее связывание). В этом случае метод будет
вызывать из того класса, к которому принадлежит
ОБЪЕКТ, спрятанной под переменной
12. Передача параметрво в функцию
OneПомимо создания под переменной базового класса
объектов из всей иерархии, в функцию вида
f(obj: One)
Two
Three
Можно передавать объект класса ниже One по
иерархии
13.
14. Задание.
Выполнить пример. Проверить, что всеработает.