为什么是这个结果呢?
class WithFinals {
void f() {
System.out.println("WithFinals.f()");
}
}
class OverridingPrivate extends WithFinals {
private void f() {
System.out.println("OverridingPrivate.f()");
}
}
public class FinalOverridingIllusion {
public static void main(String[] args) {
OverridingPrivate op1 =
new OverridingPrivate();
WithFinals op = op1;
op.f();
}
}
结果显示OverridingPrivate.f() ,是因为因为实例已经生成了啊!只是传了一个引用过去啊 ,所以还是调用OverridingPrivate的方法,但是如果把class OverridingPrivate extends WithFinals {
方法改成 private void f() 了呢,为什么实例又不能访问了呢?通过不了编译,为什么呢?实例已经生成了,调用原来的方法,但是具有的是转型的访问权利?