缺陷:覆盖私有方法
package java_test1;
/*
* 2019/7/23
* 覆盖问题
* */
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()");
}
}
//output:private f()
我们期望输出的是public f() ,但是由于private 的方法被认为是final方法,而且对于导出类是屏蔽的,这种情况下Derived的f()方法就被认为是一个全新的方法。
- 结论:只有非private方法才可以被覆盖,所以我们在多态的使用时候要将基类的方法设置成非private。
















