Книга: Основы программирования на 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 метод класса В
Рассмотренная форма динамического полиморфизма времени выполнения представляет собой один из наиболее мощных механизмов объектно-ориентированного программирования, позволяющих писать надежный, многократно используемый код.
- 7.1. Переменные класса
- 7.2. Оператор new
- 7.3. Объявление методов
- 7.4. Вызов метода
- 7.5. Скрытие переменных
- 7.6. Конструкторы
- 7.7. Совмещение методов
- 7.8. Ссылка this
- 7.9. Наследование
- 7.10. Ссылка super
- 7.11. Замещение методов
- 7.12. Динамическое назначение методов
- 7.13. Директива final
- 7.14. Деструкторы
- 7.15. Статические методы
- 7.16. Абстрактные классы
- 7.16. Активизация фоновых методов
- 7.7. Совмещение методов
- 7.11. Замещение методов
- Глава 2 Многообразие методов стимулирования
- Какова отдача от методов?
- Множественные интерфейсы и имена методов
- 1. Назначение экспертных систем
- Перегрузка методов с несколькими параметрами типа
- Глава 3 Нормативные руководящие документы, назначение и задачи информационной безопасности России
- 12.7.4. Переназначение клавиш на клавиатуре
- 4.1.1. Назначение прав
- Динамическое распределение памяти