在学习多态的时候,发现一个问题:父类引用指向子类对象的时候,该引用可以调用父类中的私有方法:
package music; public class PrivateOverride { private void f() { System.out.println("private f()"); } public static void main(String[] args) { PrivateOverride po = new Derived(); po.f(); } } class Derived extends PrivateOverride { //public void f() { System.out.println("public f()"); } }
最后的打印结果是:
private f()
无法理解这是怎么回事,不是说好的动态绑定的么,如果在运行的时候发现调用父类私有方法的是指向子类对象的父类引用,该方法应该是不能被调用的啊