一、前言

 

在 Java 面向对象编程中,重载(Overload)和重写(Override)是两个极易混淆但极其重要的语法特性。二者都是实现多态的手段:重载对应编译时多态,重写对应运行时多态。熟练区分、掌握底层规则,是写出规范代码、应对考试和面试的必备基础。

 二、方法重载(Overload)

 1. 定义

在同一个类中,多个方法方法名相同、参数列表不同,称为方法重载。

 2. 构成重载的条件(重点)

 1. 方法名必须完全一致

​2. 参数列表必须不同(满足其一即可)

​- 参数个数不同

​- 参数类型不同

​- 参数顺序不同

​3. 返回值、访问修饰符、异常不参与重载区分

 3. 代码示例

public class OverLoadDemo {

    // 两个参数

    public int add(int a, int b) {

        return a + b;

    }

    // 三个参数(参数个数不同)

    public int add(int a, int b, int c) {

        return a + b + c;

    }

    // 参数类型不同

    public double add(double a, double b) {

        return a + b;

    }

}

4. 重载特点

- 发生在同一个类

- 编译阶段绑定,静态多态

- 提高方法灵活性,同一个功能适配多种参数

三、方法重写(Override)

1. 定义

子类对父类继承的方法进行重新实现,方法名、参数列表、返回值完全一致,用于修改父类原有逻辑。

2. 重写成立条件

1. 发生在父子类继承关系中

2. 方法名、参数列表、返回值完全一致

3. 子类访问权限 ≥ 父类权限

4. 子类抛出异常 ≤ 父类异常

5. 私有方法、静态方法、final 方法不能重写

3. 代码示例

class Animal {

    public void shout() {

        System.out.println("动物发出叫声");

    }

}

class Dog extends Animal {

    // 重写父类方法

    @Override

    public void shout() {

        System.out.println("小狗汪汪叫");

    }

}

四、重载与重写核心区别总结

1. 位置:重载同类;重写跨父子类

2. 机制:重载编译多态;重写运行多态

3. 规则:重载改参数;重写不改签名改逻辑

4. 关键字:重写可加@Override,重载不需要

五、总结

重载让一个方法名适配多种参数,提升代码简洁度;重写让子类个性化改造父类行为,是多态的核心实现。两者配合,是 Java 面向对象设计灵活性的关键。

更多推荐