Метод в настраиваемом классе можно переопределить, как любой другой метод. Рассмотрим пример (листинг 3.16), в котором переопределен метод getob().
Листинг 3.16. Переопределение настраиваемого метода в настраиваемом классе
class Gen {
T ob; // declare an Object of type T
// Pass the constructor a reference to
// an Object of type T.
Gen(T o) {
ob = o;
}
// Return ob.
T getob() {
System.out.print("Gen's getob(): " );
return ob;
}
}
// A subclass of Gen that overrides getob().
class Gen2 extends Gen {
Gen2(T o) {
super(o);
}
// Override getob().
T getob() {
System.out.print("Gen2's getob(): ");
return ob;
}
}
// Demonstrate generic method override.
class OverrideDemo {
public static void main(String args[ ]) {
// Create a Gen Object for Integers.
Gen iOb = new Gen(88);
// Create a Gen2 Object for Integers.
Gen2 iOb2 = new Gen2(99);
// Create a Gen2 Object for Strings.
Gen2 strOb2 = new Gen2("Generics Test");
System.out.println(iOb.getob());
System.out.println(iOb2.getob());
System.out.println(strOb2.getob());
}
}
Далее приведен вывод результатов работы программы:
Gen's getob(): 88
Gen2's getob(): 99
Gen2's getob(): Generics Test
Как показывает вывод программы, переопределенная версия метода getob () вызывается для объектов типа Gen2, а версия из суперкласса — для объектов типа Gen.
|