任何人都可以解释一下java中这段代码流的内部逻辑是什么

时间:2016-04-15 10:16:53

标签: java

以下是简单的继承程序。

{{1}}

在这种情况下调用子类的fun方法,但是不调用display方法并且发生编译错误。

1 个答案:

答案 0 :(得分:0)

  

conecpt称为动态方法调度或运行时多态。

根据这个,您可以将object (new ClassName();)派生类存储在Base类的reference variable (BaseClass b)中。

但是通过这样做,只会调用 Base类自己的方法的方法,或者调用子类中的重写方法。通过这种方法,无法调用子类自己的方法

这就是为什么你在显示方法上输出派生类的有趣方法和错误。

Base obj = new Sub();
obj.fun();               //-----------> In fun
obj.display();           //-----------> Error

obj = new Base();
obj.fun();               //-----------> fun

这是动态方法调度。