首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于父类private方法的覆盖有关问题

2012-04-04 
关于父类private方法的覆盖问题。不是说父类的private成员方法是不能被子类方法覆盖的,因此private类型的方

关于父类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它仍然访问不到,就会出现异常。

热点排行
Bad Request.