欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

陷阱:“覆盖” 私有方法

程序员文章站 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()方法。

相关标签: F#