Переопределение методов в обобщенном классе
Метод обобщенного класса, как и любой другой метод, может быть переопределен. Например, рассмотрим следующую программу, в которой переопределяется метод getob():
// Переопределение обобщенного метода в обобщенном классе.
class Gen
Т ob; // Объявление объекта типа Т
// Передать конструктору ссылку
//на объект типа Т. Gen(T о) {
ob = о;
}
// Возвращение ob. Т getob () {
System.out.print("getob () класса Gen: " );
return ob;
}
}
// Подкласс Gen, переопределяющий getob().
class Gen2
Gen2(T o) {
super(o);
// Переопределение getob().
Т getob () {
System.out.print("getob () класса Gen2: ");
return ob;
}
}
// Демонстрация переопределения обобщенных методов.
class OverrideDemo {
public static void main(String args[]) {
// Создание объекта Gen для Integer.
Gen
// Создание объекта Gen2 для Integer.
Gen2
// Создание объекта Gen2 для String.
Gen2
System.out.println(iob.getob());
System.out.println(i0b2.getob());
System.out.println(str0b2.getob());
}
}
Результат работы этой программы показан ниже:
getob () класса Gen: 88
getob () класса Gen2 : 99
getob() класса Gen2 : Обобщенный тест
Как подтверждает вывод, переопределенная версия getob () вызывается для объекта Gen2, но для объектов типа Gen вызывается версия суперкласса.