Java: How to call super().super() in overridden method (grandparent method)
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Why is super.super.method(); not allowed in Java?
号
我有3个类,它们互相继承,如下所示:
1 2 3 4 5 | A ? B ? C |
在每个类中,我都有以下方法:
1 2 3 | protected void foo() { ... } |
号
在
1 2 3 4 5 | protected void foo() { // This doesn't work, I get the following compile time error: // Constructor call must be the first statement in a constructor super().super().foo(); } |
编辑一些上下文信息:B类是我们使用的实际类。C类是一个单元测试类,它有一些修改。
- 要在超级类中调用方法,可以使用
super.foo() ,而不是super().foo() 。super() 调用父类的构造函数。 - 没有办法打电话给
super.super.foo() 。您可以在B类中增加一个对super.foo() 的调用,这样在C中调用super.foo() 会在B中调用super.foo() ,而在A中调用foo() 。
在Java中是不可能的。你需要依靠