日期:2014-05-20  浏览次数:20742 次

关于父类private方法的覆盖问题。
不是说父类的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);
}
}
这不是覆盖了?求详细解释?谢了?

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

------解决方案--------------------
不存在覆盖不覆盖,因为子类根本就不知道父类有此方法,所以也就没有覆盖之说。子类只认为是自己特有的方法,父类没有。
------解决方案--------------------
首先编译以后会有FinalTest1.class和FinalTest.class文件,

FinalTest1的方法存在于FinalTest1.class中,

FinalTest的方法存在于FinalTest.class中,

用FinalTest类的实例调用test();的时候,

先在FinalTest.class中查找有没有test();方法,

结果要是有,那就执行test();

结果要是没有,就追溯到父类中去,但是如果父类的方法是private它仍然访问不到,就会出现异常。