当前位置:首页 > Java

如何实现Java重写

2026-03-25 18:54:59Java

Java 方法重写的基本规则

方法重写(Override)是面向对象编程中多态性的重要体现,需满足以下条件:

  • 子类方法名、参数列表必须与父类被重写方法完全一致
  • 子类方法返回类型应与父类方法相同或是其子类型(协变返回类型)
  • 子类方法访问修饰符不能比父类更严格(public > protected > default > private)
  • 被重写方法不能是final或static方法
class Animal {
    public void move() {
        System.out.println("动物可以移动");
    }
}

class Dog extends Animal {
    @Override  // 推荐使用注解明确标识
    public void move() {
        System.out.println("狗可以跑和走");
    }
}

使用@Override注解的重要性

添加@Override注解能带来编译时检查:

  • 确保确实是重写父类方法而非意外创建新方法
  • 当父类方法签名变更时,子类会立即报错
  • 提高代码可读性,明确表达设计意图
class Cat extends Animal {
    @Override  // 如果拼写错误如mouv(),编译器会报错
    public void move() {
        System.out.println("猫步轻盈");
    }
}

重写与重载的区别

重写(Override)与重载(Overload)本质不同:

  • 重写发生在继承关系中,要求相同方法签名
  • 重载发生在同一类中,要求不同参数列表
  • 重写遵循运行时多态,重载是编译时多态
class Calculator {
    // 重载示例
    int add(int a, int b) { return a + b; }
    double add(double a, double b) { return a + b; }

    // 重写示例
    @Override
    public String toString() { return "计算器对象"; }
}

处理异常的重写规则

重写方法时异常处理需注意:

  • 子类方法可以不抛出任何异常
  • 可以抛出父类方法声明异常的子类异常
  • 不能抛出比父类方法更宽泛的检查型异常
class Parent {
    void demo() throws IOException { /* ... */ }
}

class Child extends Parent {
    @Override
    void demo() throws FileNotFoundException {  // FileNotFoundException是IOException子类
        /* ... */
    }
}

协变返回类型的应用

Java5+支持返回类型协变:

如何实现Java重写

  • 子类重写方法可返回父类方法返回类型的子类
  • 适用于方法返回对象类型的情况
class ShapeFactory {
    Shape create() { return new Shape(); }
}

class CircleFactory extends ShapeFactory {
    @Override
    Circle create() {  // Circle是Shape子类
        return new Circle();
    }
}

分享给朋友:

相关文章

如何实现vue

如何实现vue

安装 Vue.js 使用 npm 或 yarn 安装 Vue.js。确保已安装 Node.js 环境。 npm install vue # 或 yarn add vue 创建 Vue 实例 在 HT…

php如何实现直播

php如何实现直播

实现直播功能的方法 PHP可以通过结合其他技术和工具来实现直播功能。以下是几种常见的方法: 使用流媒体服务器 配置流媒体服务器如Nginx-RTMP、Red5或Wowza。这些服务器支持RTMP协…

vue如何实现滤镜

vue如何实现滤镜

Vue 实现滤镜的方法 在 Vue 中实现滤镜效果可以通过多种方式,以下是常见的几种方法: 使用 CSS filter 属性 通过 CSS 的 filter 属性可以直接为元素添加滤镜效果。在 Vu…

vue如何实现增删

vue如何实现增删

使用 Vue 实现增删功能 在 Vue 中实现增删功能通常涉及数据绑定、事件处理和列表渲染。以下是具体实现方法: 数据定义与初始化 在 Vue 组件的 data 选项中定义数组来存储需要操作的数据项…

vue如何实现截图

vue如何实现截图

Vue 实现截图的方法 在 Vue 中实现截图功能可以通过多种方式完成,以下是几种常见的实现方法: 使用 html2canvas 库 html2canvas 是一个流行的 JavaScript 库,…

vue如何实现cron

vue如何实现cron

Vue 中实现 Cron 表达式功能 在 Vue 项目中实现 Cron 表达式功能通常需要借助第三方库或自定义组件。以下是几种常见方法: 使用 vue-cron 组件 vue-cron 是一个专门为…