温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

java超类方法能被覆盖吗

发布时间:2026-10-11 02:53:23 来源:亿速云 阅读:94 作者:小樊 栏目:编程语言

在 Java 中,超类(父类)的方法是可以被覆盖(override)的,但有一些规则和限制:

一、可以被覆盖的情况

如果父类的方法是:

  • 非 private
  • 非 final
  • 非 static
  • 非构造方法

那么子类可以重写(覆盖)该方法。

示例:

class Animal {
    void sound() {
        System.out.println("动物叫");
    }
}

class Dog extends Animal {
    @Override
    void sound() {
        System.out.println("汪汪汪");
    }
}

二、不能被覆盖的情况

以下方法不能被覆盖:

  1. private 方法

    • 子类看不到,不算覆盖,只是新方法
  2. final 方法

    • 明确禁止重写
  3. static 方法

    • 属于类,不参与多态,子类可“隐藏”但不能覆盖
  4. 构造方法

    • 不能被继承,也不能被覆盖

三、覆盖的规则(重要)

  • 方法名、参数列表必须相同
  • 返回类型可以是协变返回类型
  • 访问修饰符不能比父类更严格
  • 不能抛出比父类更多、更宽泛的受检异常

四、总结

✅ Java 中超类方法可以被覆盖
❌ 但 private / final / static / 构造方法 不可以真正覆盖

如果你愿意,我也可以帮你区分 override(覆盖) vs overload(重载) 或 隐藏(hide)。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手