2 hsstc hsstc 于 2013.10.05 12:10 提问

请问下这段代码正确的原因,为什么父类可以调用抽象方法,执行的是子类重写的方法

public class TestA {

public static void main(String[] args) {
    TestA a = new TestA();
    a.start();

}

public void start(){
    B b = new B();
    b.funA();
}

public abstract class A {
    public void funA(){
        System.out.println("I'm funA in A ");
        funB();
    }

    abstract void funB();
}

public class B extends A{

    @Override
    public void funA() {
        super.funA();
    }

    @Override
    void funB() {
        System.out.println("I'm funB in B");
    }

}

}

我就是想问为什么调用父类方法后,父类为什么调用的是子类的方法,不是调用抽象么,抽象不是不能被调用么

Csdn user default icon
上传中...
上传图片
插入图片