当前位置:首页 > 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注解能带来编译时检查:

如何实现Java重写

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

重写与重载的区别

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

如何实现Java重写

  • 重写发生在继承关系中,要求相同方法签名
  • 重载发生在同一类中,要求不同参数列表
  • 重写遵循运行时多态,重载是编译时多态
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+支持返回类型协变:

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

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

分享给朋友:

相关文章

vue如何实现id

vue如何实现id

在 Vue 中实现 ID 绑定 Vue 提供了多种方式为元素或组件绑定唯一的 ID,可以根据具体需求选择合适的方法。 方法一:使用 v-bind 绑定静态或动态 ID <template&g…

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

vue如何实现增删

vue如何实现增删

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

h5页面如何实现

h5页面如何实现

实现H5页面的方法 H5页面是基于HTML5技术的网页,通常用于移动端和响应式设计。以下是实现H5页面的关键步骤和技术要点。 基础结构 使用HTML5的DOCTYPE声明作为页面的起始。HTML5简…

vue如何实现id

vue如何实现id

Vue 中实现 ID 的方法 在 Vue 中,可以通过多种方式为元素或组件分配唯一的 ID。以下是几种常见的方法: 使用 v-bind 绑定 ID 通过 v-bind 动态绑定 ID,可以在模板中直…

如何实现vue验证

如何实现vue验证

Vue 表单验证的实现方法 Vue 表单验证可以通过多种方式实现,包括内置指令、第三方库和自定义验证逻辑。以下是几种常见的方法: 使用 Vue 内置指令进行基础验证 Vue 提供了 v-model…