温馨提示×

温馨提示×

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

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

java Override重写是什么

发布时间:2026-10-04 01:44:17 来源:亿速云 阅读:86 作者:小樊 栏目:编程语言

在 Java 中,Override(方法重写 / 覆盖) 指的是:子类重新定义父类中已经存在的方法,以满足子类自己的需求。


一、什么是方法重写(Override)

当:

  • 子类 继承 了父类
  • 子类 提供了一个和父类方法签名完全相同的方法

这就叫 方法重写(Override)。

✅ 方法签名相同指的是:

  • 方法名相同
  • 参数列表相同(个数、类型、顺序)
  • 返回值类型 相同或协变(子类返回类型可以是父类返回类型的子类)

二、Override 的作用

  • 让子类 修改或扩展 父类的行为
  • 实现 多态
  • 提高代码的可扩展性和可维护性

三、Override 的基本要求

1️⃣ 子类方法的访问权限不能比父类更严格

class Parent {
    public void show() {}
}

class Child extends Parent {
    // ❌ 错误:不能降低访问权限
    // protected void show() {}

    // ✅ 正确
    public void show() {}
}

2️⃣ 不能抛出比父类更多、更宽泛的受检异常

class Parent {
    void test() throws IOException {}
}

class Child extends Parent {
    // ❌ 错误:抛出了更宽泛的异常
    // void test() throws Exception {}

    // ✅ 正确
    void test() {}
}

3️⃣ 静态方法不能被重写(只能被隐藏)

class Parent {
    static void show() {}
}

class Child extends Parent {
    static void show() {} // 这是方法隐藏,不是重写
}

四、代码示例

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 vs Overload(重载)

对比项 Override(重写) Overload(重载)
发生位置 父子类之间 同一个类中
方法名 相同 相同
参数列表 必须相同 必须不同
返回值 相同或协变 可以不同
多态 ✅ 支持 ❌ 不支持

七、一句话总结

Override 是子类对父类方法的“重新实现”,是多态和面向对象设计的核心机制之一。

如果你愿意,我也可以讲:

  • Override 在接口 / 抽象类中的使用
  • 重写 equals / hashCode / toString
  • 面试题中常见的 Override 陷阱
向AI问一下细节

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

AI
助
手