ООП. Часть 3. Полиморфизм.
Что такое полиморфизм?
Переменная базового класса
Переменная базового класса
Вызов нужной реализации метода.
Про вызов нужной реализации функции
Передача параметрво в функцию
Задание.
524.50K
Category: programmingprogramming

ООП. Часть 3. Полиморфизм

1. ООП. Часть 3. Полиморфизм.

Самое колдунское колдунство.
Очень уличная магия.

2. Что такое полиморфизм?

Способность функции выбирать правильную версию метода в зависимости
от типа вызывающего объекта.
Возможность создавать функции для работы с произвольным классом из
иерархии.
Самая черная магия из всех.

3. Переменная базового класса

One
Two
Three
var a: One; <- переменная базового класса.

4.

5.

6. Переменная базового класса

One
Two
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. Задание.

Выполнить пример. Проверить, что все
работает.
English     Русский Rules