陷阱:“覆盖” 私有方法
程序员文章站
2022-03-15 19:45:03
...
public class PrivateOverride {
private void f() { System.out.println("private f()"); }
public static void main(String[] args) {
PrivateOverride po = new DerivedClass();
po.f();
}
}
class DerivedClass extends PrivateOverride {
public void f() { System.out.println("public f()"); }
}
//输出结果为:private f()
private方法被自动认为是final方法,而且对于子类是屏蔽的,因此,DerivedClass类的f()方法是一个新方法,基类中的f()方法对于子类DerivedClass是不可见的,因此不能被重载,导致调用的是声明基类的f()方法。