class WithFinals {
// Identical to "private" alone:
private final void f() {
System.out.println("WithFinals.f()");
} // Also automatically "final":
private void g() {
System.out.println("WithFinals.g()");
}
}class OverridingPrivate extends WithFinals {
private final void f() {
System.out.println("OverridingPrivate.f()");
} private void g() {
System.out.println("OverridingPrivate.g()");
}
}
}

解决方案 »

  1.   

    可以重写private方法吗?加了final了,为什么还可以重写?
      

  2.   

    子类的和父类的是两个不同的函数,父类的f,g还是被子类继承了,而子了一又定义了相同的函数,但是父类的
    f,g函数还是存在在子类里的,并且是私有的,所以不能被子类访问
    在你这里并没有重写父类,、只不过在子类里又定义了个相同名的
      

  3.   

    tij 4th 书上的例子!误导了我!pirvate方法是不能被重写的,private方法在别的类中根本就触及不到!
      

  4.   

    你这不是重写,可以说你的OverridingPrivate里面的两个方法跟WithFinals 的两个方法没有丝毫关系~class OverridingPrivate extends WithFinals 从WithFinals 根本没有继承到那两个方法,因为那两个
    方法是私有的,你把WithFinals 中的的private final void f()换成是public final void f()或protected
    后  OverridingPrivate 才能继承到这个方法,这时才能测试你能不能重写,单显然,final方法是不能被重写的~
      

  5.   

    由于子类在继承的时候,看不到父类的private方法,所以在继承时你有定义了一个相同的函数,那么这个具有相同函数名的方法对子类来说是一个完全新的方法。
    他们没有联系,只是名称相同而已。
      

  6.   

    子类不能继承父类中private的成员和方法!