Программирование на JAVA
Меню :
Стартовая
Основы программирования
Программирование на JAVA
Программирование на C++
Программирование на Pascal
Задачи по программированию
Объектная модель в Java
-- _ — - —--
Перейдем к статическим методам. Рассмотрим пример:
class Parent {
static public int getValue() { return 0;
}
}
class Child extends Parent { static public int getValue() { return 1;
}
}
И строки, демонстрирующие работу с этими методами:
Child с = new Child();
System.out.println(c.getValue());
Parent p = c;
System. out.println(p.getValue());
Аналогично случаю со статическими переменными, вспоминаем алгоритм обработки компилятором таких обращений к статическим элементам и получаем, что код эквивалентен следующим строкам:
System. out.println(Child.getValue()); System.out.println(Parent.getValue());
Результатом будет:
1 О
То есть статические методы, подобно статическим полям, принадлежат классу и появление наследников на них не сказывается.
Статические методы не могут перекрывать обычные, и наоборот.
Полиморфизм и объекты
В заключение рассмотрим несколько особенностей, вытекающих из свойств полиморфизма.
Во-первых, теперь можно точно сформулировать, что является элемен. тами ссылочного типа. Ссылочный тип обладает следующими элементами:
• непосредственно объявленными в его теле;
• объявленными в его родительском классе и реализуемых интер. фейсах, кроме:
- private-элементов;
- "скрытых" элементов (полей и статических методов, скрытых одноименными элементами);
- переопределенных (динамических) методов.
Во-вторых, продолжим рассматривать взаимосвязь типа переменной и типов ее возможных значений. К случаям, описанным в предыдущей лекции, добавляются еще два. Переменная типа абстрактный класс может ссылаться на объекты, порожденные неабстрактным наследником этого класса. Переменная типа интерфейс может ссылаться на объекты, порожденные от класса, реализующего данный интерфейс.
Сведем эти данные в таблицу.