<< ПредыдущаяОглавлениеСледующая >>


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 метод класса В

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

 



<< ПредыдущаяОглавлениеСледующая >>