java - 多级继承子类调用 'grand'父函数

标签 java inheritance superclass

<分区>

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() 中,我只想在某些情况下使用 GrandParent.walk()。我怎样才能做到这一点?因为 super.walk() 将始终使用 Parent.walk()。

注意:(请注意,这是复杂场景的简化示例)

注意 2: 请仅说明是否有这样做的标准程序。我在父类中使用了一个标志,如果子类想要使用 GrandParent 的方法,则设置该标志。但是这个序列变得非常复杂。

最佳答案

这里的问题在于决定调用父函数“walk”。它不应该被称为“walk”,除非它是 GrandParent walk() 的完整功能替代品。

如果无法更改该决定,那么@zvzdhk 现有答案中建议的解决方案是可以完成的最佳解决方案。

理想情况下,Parent walk() 将被赋予一个新名称,以反射(reflect)其功能与 GrandParent walk() 的不同之处。然后可以从 Child 类调用每个函数。

关于java - 多级继承子类调用 'grand'父函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15333780/

相关文章:

Java继承-调用父类(super class)方法

Java - 从子类发送值

java - 单击 Javafx 2.2 选项卡中的保存/取消按钮时如何关闭该选项卡?

java - 在 NT 机器上运行 J6SE 应用程序

java - Tomcat servlet 问题 - 找不到类

c++ - 继承期间无法访问基址

javascript - Three.js:无法补间对象位置var(出现空错误),但对象本身实际上可用

c++ - 如何创建一个接口(interface)与 double 匹配但模板可以专门化的类?

java - 尽管不允许多重继承,但一个类如何扩展另一个类,扩展 Object 类?

java - 并发读取/写入java中的变量