This question already has answers here:
Calling a subclass method from superclass
(4个答案)
4年前关闭。
为什么我不能在
Klasse1.java
Klasse2.java
测试器
(4个答案)
4年前关闭。
Klasse1
是抽象类,并具有foo()
方法。 Klasse2
扩展Klasse1
并具有doo()
方法,但不要覆盖foo()
方法。为什么我不能在
doo()
类中调用Tester
方法?Klasse1.java
public abstract class Klasse1 {
public void foo() {
System.out.println("Klasse1");
}
}
Klasse2.java
public class Klasse2 extends Klasse1 {
public void doo() {
System.out.println("Klasse2");
}
}
测试器
public class Tester {
public static void main(String[] args) {
Klasse1 k;
k = new Klasse2();
k.foo();
k.doo(); // doesn't work
}
}
最佳答案
Java编译器在编译时会检查引用类型而不是实例类型。
在这种情况下,引用类型是Klasse1
,它没有doo()
。因此,它将引发错误。
09-11 18:49