Call 'grand' parent function from child class in multi-level inheritance
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | public class GrandParent { public void walk() { ... } } public class Parent { public void walk() { ... } } public class Child { public void walk() { // Here in some cases I want to use walk method of GrandParent class } } |
现在在child.walk()中,我只想在某些情况下使用grandorrent.walk()。我该怎么做?因为super.walk()将始终使用parent.walk()。
注:(请注意,这是复杂场景的简化示例)
注2:请仅说明是否有标准的程序。我在父类中使用了一个标志,如果子类要使用祖父母的方法,它将设置该标志。但这个序列变得非常复杂。
这里的问题在于调用父函数"walk"的决策。它不应该被称为"行走",除非它打算完全替代祖父母
如果不能改变这个决定,那么@zvzdhk现有答案中建议的解决方案是最好的。
理想情况下,父母
您可以这样指定访问父级值的方法:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | public class GrandParent { public void walk() { ... } } public class Parent { public void walk() { ... } public void grandParentWalk() { super.walk(); } } public class Child { public void walk() { grandParentWalk(); } } |
类似问题:
- Java:如何访问父类方法两个级别?
- 为什么是Super?Super?方法();在Java中不允许?