有三个类 - Children
,Father
和Ancestor
。 Children
扩展Father
,Father
扩展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() {
}
}
如何在Children的test()方法中使用Ancestor的test()方法?我想跳过Father的test()方法。
答案 0 :(得分:1)
你做不到。 Java不允许执行super.super.method()
之类的操作。其中的原因在this excellent answer中列出,但最重要的是它违反了封装。
如果功能确实是必要的,并且做这样的事情是有道理的,你总是可以在Father
类中添加一个只调用super.test()
方法的方法,但做这样的事情通常是不好的做法。除非您有一些真正的良好的推理,否则请重新考虑您的代码。实际上不应该从this
或super
调用方法。
答案 1 :(得分:0)
简短的回答是,你做不到。它违反了封装,通常是不好的做法。实现你想要的更好的方法是使Ancestor.test()抽象并有一个新的受保护的方法,如Ancestor.baseTest();然后,您可以从Father,Child和任何其他想要访问逻辑的子类调用Ancestor.baseTest()。