0

假设我有这个超级课:

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...
    }
}

然后进入主:

MySubClass mySubClass = new MySubClass ();
mySubClass.MyPuMethod();

mySubClass.MyPuMethod() 将调用哪个 MyPrMethod?

编辑:我已经三次被否决了。我现在不能尝试,因为我不在家,尽管现在知道答案将帮助我设计我正在制作的程序中的一部分。

4

3 回答 3

3

因为该方法MyPrMethod()在子类中被覆盖,所以子类实现会被调用。

实际调用的方法取决于调用它的对象

于 2013-07-17T21:06:10.937 回答
2

将使用该方法的子类版本。当 MyPuMethod 调用 MyPrMethod 时,首先检查类 (MySubClass) 是否有所需的方法,并且只有在未定义时才会递归搜索父类。我们当前正在执行的方法是在不同的类中定义的这一事实并没有改变这一点。

于 2013-07-17T21:08:58.583 回答
1

来自子类 MySubClass 的 MyPrMethod 将被调用。

于 2013-07-17T21:09:00.507 回答