Portagas Ace 2024-01-26 17:27 采纳率: 0%
浏览 2

java继承方法体同名

#java中超类、父类、子类某个方法同名。子类方法体中想要越过父类的同名方法,来调用超类中的同名方法,该怎么调?

  • 写回答

2条回答 默认 最新

  • 专家-郭老师 Java领域新星创作者 2024-01-26 17:31
    关注

    在 Java 中,超类(即父类的父类)的方法不能被子类直接调用,这是因为 Java 仅支持单继承(也就是说每个类只能有一个直接父类),并且子类的范围仅限于其直接父类的范围。
    如果你的子类通过 super 关键字越过父类直接调用超类中的方法,你会收到一个编译错误,因为子类无法直接访问超类的内容。
    一个可能的解决方案是在你的父类中创建一个新的方法,让它调用超类的对应方法,然后让子类调用这个新的方法。以下是一个例子:

    class Grandparent {
        void foo() {
            System.out.println("Grandparent's foo");
        }
    }
    
    class Parent extends Grandparent {
        void foo() {
            System.out.println("Parent's foo");
        }
    
        void callSuperFoo() {
            super.foo();
        }
    }
    
    class Child extends Parent {
        void foo() {
            System.out.println("Child's foo");
        }
    
        void callGrandparentFoo() {
            super.callSuperFoo();
        }
    }
    
    
    

    在这个例子中,我们在 Parent 类中创建了一个新的方法 callSuperFoo(),它调用自己的父类 Grandparent 的 foo() 方法。然后在 Child 类中,我们可以通过调用这个新的方法 callGrandparentFoo() 来间接调用 Grandparent 类的 foo() 方法。
    这个解决方案的缺点是它需要父类的协助,在某些情况下可能并不可行。如果你无法更改父类,那么你可能会需要寻找其他解决方案,比如重设计。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月26日

悬赏问题

  • ¥60 如何批量获取json的url
  • ¥15 对法兰连接元件所承受的表面载荷等效转化为法兰开孔接触面上的等效表面载荷?
  • ¥15 comsol仿真压阻传感器
  • ¥15 Python线性规划函数optimize.linprog求解为整数
  • ¥15 llama3中文版微调
  • ¥15 pg数据库导入数据序列重复
  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼