不是说父类的private成员方法是不能被子类方法覆盖的,因此private类型的方法默认是final类型的吗,

public class FinalTest1{
private void test(){
System.out.println("s");
}
public static void main(String [] args){
FinalTest start = new FinalTest();
start.test();
}
}
class FinalTest extends FinalTest1{
void test (){
int b = 1;
System.out.print(b);
}
}
这不是覆盖了?求详细解释?谢了?

解决方案 »

  1.   

    这不是覆盖
    FinalTest start = new FinalTest();
    start.test();
    start.test();调用的是FinalTest的test()方法,而父类的test()不是覆盖了,而是子类FinalTest根本访问不到!所以只是子类和父类方法名相同罢了。
      

  2.   

    首先编译以后会有FinalTest1.class和FinalTest.class文件,FinalTest1的方法存在于FinalTest1.class中,FinalTest的方法存在于FinalTest.class中,用FinalTest类的实例调用test();的时候,先在FinalTest.class中查找有没有test();方法,结果要是有,那就执行test();结果要是没有,就追溯到父类中去,但是如果父类的方法是private它仍然访问不到,就会出现异常。
      

  3.   

    子类根本不能访问父类中的private方法,父类的private方法只有自己能访问,所以才叫private