【发布时间】:2013-10-28 18:57:47
【问题描述】:
我有一个带有 getT() 方法的 A 接口,abstract B class 带有方法 getS() 和 class C 扩展 B class implements A interface。我正在覆盖A 接口和C 子类中的B 超类中的方法。然后在main 方法中,我将C 类实例化为typeo,如果A 像这样:A obj = new C(); 我可以从obj 调用getT(),但不能调用getS()方法。如何从obj 调用getS() 方法,但是我不能更改obj 的类型,它必须是A。这是代码:
接口 A:
public interface A {
public String getT();
}
抽象类 B:
public abstract class B implements A {
public abstract String getS();
}
子类 C:
public class C extends B {
@Override
public String getT() {
System.out.println("method getT() from C class");
return null;
}
@Override
public String getS() {
return null;
}
}
还有T类里面的main方法:
public class T {
public static void main(String[] args) {
A obj = new C();
obj.getT();
}
}
【问题讨论】:
-
这些“静态方法”在哪里?这个“压倒一切”在哪里?
标签: java methods static overriding