This question already has answers here:
Calling a subclass method from superclass
                                
                                    (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