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()
po.f();实际上调用的还是 private void f() 这个方法,所以输出的是:private f()。
f()为私有, 只允许内部访问。实际上执行的是父类的private f()
PrivateOverride 对象 肯定会把自己的打印出来
po.f();
如此声明po;调用f()方法时,会先看子类中有没有override的方法,有就调用,没有就调用父类的。而因为f()方法是privte的,所以根本不用去看子类中有没override的方法 它本就是不可覆盖的