| Программирование на языке Java |
| Динамическое назначение методов |
|
teasernet_blockid = 181683;
teasernet_padid = 62962;
rch" align="justify">Давайте в качестве примера рассмотрим два класса, у которых имеют простое родство подкласс / суперкласс, причем единственный метод суперкласса замещен в подклассе. class A { void callme() { System.out.println("Inside A's callrne method"); }} class В extends A { void callme() { Syst em.out.println("Inside B's callme method");}} class Dispatch { public static void main(String args[]) { A a = new B(); a.callme(); } } Обратите внимание—внутри метода main мы объявили переменную а класса А, а проинициализировали ее ссылкой на объект класса В. В следующей строке мы вызвали метод callme. При этом транслятор проверил наличие метода callme у класса А, а исполняющая система, увидев, что на самом деле в переменной хранится представитель класса В, вызвала не метод класса А, а callme класса В. Ниже приведен результат работы этой программы:С:\> Java Dispatch Inside B's calime method Замечание Программистам Delphi / C следует отметить, что все Java по умолчанию являются виртуальными функциями (ключевое слово virtual). Рассмотренная форма динамического полиморфизма времени выполнения представляет собой один из наиболее мощных механизмов объектно-ориентированного программирования, позволяющих писать надежный, многократно используемый код. |
