温馨提示×

温馨提示×

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

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

何为java Override重写

发布时间:2026-10-24 15:48:39 来源:亿速云 阅读:92 作者:小樊 栏目:编程语言

在 Java 中,Override(方法重写 / 覆盖) 是指:在子类中定义一个与父类中同名、同参数列表、同返回类型(或协变返回类型)的方法,用来替换或扩展父类方法的实现。


一、Override 的基本概念

当子类继承父类后:

  • 如果父类的方法不能满足子类的需求
  • 子类可以**重写(Override)**该方法

重写后:

  • 方法名相同
  • 参数列表相同
  • 返回类型相同(或协变)
  • 访问权限不能比父类更严格

二、一个简单的例子

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

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

public class Test {
    public static void main(String[] args) {
        Animal a = new Dog();
        a.sound(); // 输出:汪汪汪
    }
}

✅ 这里 Dog 重写了 Animal 的 sound() 方法
✅ 运行时根据实际对象类型调用方法(多态)


三、@Override 注解(推荐)

@Override
void sound() { ... }

作用:

  • 告诉编译器这是重写方法
  • 如果签名写错,编译器会报错
  • 提高代码可读性和安全性

四、Override 的规则(重点)

✅ 1. 方法签名必须一致

  • 方法名
  • 参数类型、个数、顺序

✅ 2. 返回类型

  • 必须相同
  • 或是协变返回类型(子类返回类型可以是父类返回类型的子类)
Object m() { ... }
String m() { ... } // 合法(协变)

✅ 3. 访问修饰符

  • 不能比父类更严格
父类 子类
public public ✅
protected protected / public ✅
default default / protected / public ✅
private ❌ 不能重写(不算重写)

❌ 4. 以下情况不能重写

  • private 方法
  • static 方法(那是隐藏,不是重写)
  • final 方法
  • 构造方法

五、Override vs Overload(易混淆)

对比 Override(重写) Overload(重载)
位置 子类与父类 同一类中
方法名 相同 相同
参数 必须相同 必须不同
返回类型 相同或协变 可不同
多态 ✅ 是 ❌ 否

六、Override 的意义

  • 实现多态
  • 提高代码可扩展性
  • 符合开闭原则(对扩展开放,对修改关闭)

如果你愿意,我也可以:

  • 用 JVM 角度解释重写
  • 对比 重写 vs 隐藏
  • 结合 Spring / 实际项目场景讲

你想从哪方面深入?

向AI问一下细节

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

AI
助
手