Книга: Основы программирования на Java

7.12. Динамическое назначение методов

7.12. Динамическое назначение методов

Давайте в качестве примера рассмотрим два класса, у которых имеют простое родство подкласс/суперкласс, причем единственный метод суперкласса замещен в подклассе.

class А {
void callme() {
System.out.println("Вызван callme метод класса А");
}

}

class В extends А {
void callme() {
System.out.println("Вызван callme метод класса В");
}
}
class Dispatch {
public static void main(String args[]) {
A a = new B();
a.callme();
}
}

Обратите внимание — внутри метода main мы объявили переменную «а» класса А и проинициализировали ее ссылкой на объект класса В. В следующей строке мы вызвали метод callme. При этом транслятор проверил наличие метода callme у класса А, а исполняющая система, увидев, что на самом деле в переменной хранится представитель класса В, вызвала не метод класса A, a callme класса В. Ниже приведен результат работы этой программы:

Вызван callme метод класса В

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

Оглавление книги


Генерация: 1.248. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз