public calss 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 vod f()
{
System.out.println("public f()");
}
}
/*
Output:
private f()
*///~
我们所希望的是输出public f(),但是由于private方法被自动认为是final方法,而且对导出类是屏蔽的。因此,在这种情况下,Derived类中的f()方法就是一个全新的方法,既然基类中的f()方法在子类Derived中不可见,因此甚至也不能被重载。
结论就是:只有非private方法才可以被覆盖;确切地说,在导出类中,对于基类中的private方法,最好采用不同的名字。