程序如下:
package polymorphism;
import static net.mindview.util.print.*;
public class PrivateOverride{
private void f() {print("private f()");}
public static void main(String [] args){
PrivateOverride po=new Derived();
po.f();
}
}
class Derived extends PrivateOverride{
public void f(){print("public f()");}
}
/* Output:
private f()
*/
我们所期望的输出是public f (),但是由于private方法被自动认为是final方法,而且对导出类是屏蔽的。因此,在这种情况下,Derived类中的f()方法就是一个全新的方法;既然基类中的f方法在子类中不可见,因此也不能被重载。