1

共有三个类 - ChildrenFatherAncestorChildrenextendsFatherFatherextends Ancestor,如下所示:

public class Ancestor {
    public void test() {
    }
}

public class Father extends Ancestor {
    @Override
    public void test() {
    }
}

public class Children extends Father {
    @Override
    public void test() {
    }
}

如何在儿童的 test() 方法中使用祖先的 test() 方法?我想跳过父亲的 test() 方法。

4

2 回答 2

1

你不能。Java 不允许做类似super.super.method(). 这个出色的答案中概述了其原因,但最重要的是它违反了封装。

如果该功能确实是必要的,并且做这样的事情是有意义的,你总是可以在你的Father类中添加一个只调用该方法的super.test()方法,但是做这样的事情通常是不好的做法。除非您有一些非常好的推理,否则请重新考虑您的代码。真的没有必要从 or 调用this方法super

于 2012-06-25T04:03:06.820 回答
0

简短的回答是,你不能。它违反了封装,通常是不好的做法。完成您想要的更好的方法是使 Ancestor.test() 抽象并具有新的受保护方法,例如 Ancestor.baseTest(); 然后,您可以从父亲、孩子和任何其他想要访问逻辑的子类中调用 Ancestor.baseTest()。

于 2012-06-25T04:03:32.887 回答