说我有这个超级班:
public class MySuperClass {
protected void MyPrMethod() {
//Do...
}
public void MyPuMethod() {
MyPrMethod();
}
}
和这个子类:
public class MySubClass extends MeSuperClass {
public MySubClass() {}
@Override protected void MyPrMethod() {
//Do this instead...
}
}
然后进入main:
MySubClass mySubClass = new MySubClass ();
mySubClass.MyPuMethod();
MyPrMethod将mySubClass.MyPuMethod()调用哪个?
编辑:我已经三次投票了。我现在不能尝试,因为我不在家,虽然现在知道答案将帮助我设计我正在制作的程序中的一部分。
答案 0 :(得分:3)
因为在子类中重写了方法MyPrMethod()
,所以将调用子类实现。
调用的实际方法取决于调用它的对象。
答案 1 :(得分:2)
将使用子类的方法版本。当MyPuMethod调用MyPrMethod时,首先检查类(MySubClass)是否有所需的方法,并且只有在未定义的情况下才会递归搜索父类。我们当前正在执行的方法在不同的类中定义的事实不会改变这一点。
答案 2 :(得分:1)
来自子类MySubClass的MyPrMethod将被调用。