Повторное использование реализации

1) Можно использовать, непосредственно создавая объект (как локальную переменную).

2) Композиция или агрегирование. Помещаем объект во внутрь нового класса. Объект – поле нового класса.

Класс – автомобиль. Класс – двигатель помещается в виде поля в класс автомобиль.

3) Наследование

Базовый тип содержит поля и методы общие для всех производных типов (характеристики и действия).

Пример:

Новый тип (дочерний) повторяет интерфейс родителя. Он гарантировано принимает те же сообщения. Кроме этого в производный класс включаются новые методы либо изменяются методы базового класса (переопределение (overriding) или замещение метода).

4) Полиморфизм

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

Например, метод:

void doStuff (Shape shape)

{

shape.erasе ();

shape.draw ();

}

Другая часть программы:

Circle circle = new Circle ();

Triangle triangle = new Triangle ();

Square square = new Square ();

doStuff (circle);

doStuff (triangle);

doStuff (square);

Обращение с производными типом как с базовым называется восходящим преобразованием – апкастинг (upcasting).

Вызовы работают правильно, будут вызваны методы нужного объекта. Все методы в Java-виртуальные (термин С++). Это реализуется путем позднего связывания.

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


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: