通过父类间接调用时,子类是否调用覆盖方法


如果类 A 中的方法调用类 B 中的父方法,该方法调用类 B 中的方法 X 在

类 A 中被覆盖,将调用方法 X 的哪个实现?子类 A 中重写的实现还是父类 B 中的原始实现?

从我的代码中,我看到调用了 override 方法,但我想象如果从类调用方法,该方法不会是子类中的重写方法。我想如果一个子类调用父类中的方法,该方法调用在子类中被覆盖的方法,将被覆盖的方法将被调用?是吗?为什么?

考虑父类中的抽象方法,它可能被该父类的其他非抽象方法调用(是的,它可以编译!

它始终是虚拟方法调用,始终是子方法的实现(当然静态方法和私有方法除外(。

父级可以故意调用子项的重写方法。

对于非静态方法,JRE 会查找替代并调用子方法,即使调用方是父方法。

静态方法不重写。

最新更新