补:Java中重写(Overriding)与重载(Overloading)的区别

在Java编程中,重写和重载是两个基本概念,它们都是实现多态的方式,但它们的应用场景和规则有所不同。
在这里插入图片描述

1. 重写(Overriding)

概念

  • 当子类有一个与父类相同名称和参数的方法时,子类可以提供该方法的特定实现。这称为方法重写。

规则

  • 重写方法必须和被重写方法有相同的方法名称、返回类型和参数列表。
  • 重写方法不能拥有比被重写方法更严格的访问权限。
  • 重写方法可以抛出与被重写方法相同的异常或更具体的异常,不能抛出更广泛的异常。
  • 只有实例方法可以被重写,静态方法不能被重写。

目的

  • 改变或扩展父类中某个方法的行为。

示例

class Animal {
    void eat() {
        System.out.println("动物吃食物");
    }
}

class Dog extends Animal {
    @Override
    void eat() {
        System.out.println("狗吃肉");
    }
}

2. 重载(Overloading)

概念

  • 在同一个类中,可以存在多个名称相同但参数列表不同的方法。这就是方法重载。

规则

  • 重载的方法必须改变参数列表(参数的数量或类型)。
  • 重载的方法可以改变返回类型。
  • 重载的方法可以改变访问修饰符。
  • 方法的抛出异常可以不同。

目的

  • 增加方法的灵活性,允许使用相同的方法名进行不同类型的操作。

示例

class MathOperations {
    int sum(int a, int b) {
        return a + b;
    }

    double sum(double a, double b) {
        return a + b;
    }
}

重要区别点(表格形式)

当然可以,以下是Java中方法重载(Overloading)和重写(Overriding)的区别:

特征方法重载 (Overloading)方法重写 (Overriding)
基本概念同一个类中定义了多个同名方法,但这些方法的参数列表不同。子类中定义了与父类中同名的方法,并且参数列表也相同。
参数参数类型、个数或顺序至少有一个不同。参数类型、个数和顺序完全相同。
返回类型可以不同,但不是区分重载的依据。必须相同,或者是协变返回类型(子类覆盖父类方法时可以返回子类类型)。
访问修饰符可以不同。可以不同,但子类方法的访问级别不能低于父类方法。
抛出的异常可以不同。子类方法抛出的异常应该不大于父类方法抛出的异常范围。
继承不涉及继承。必须涉及一个继承体系中的两个类(父类和子类)。
调用时机编译时决定使用哪个方法。运行时根据对象的实际类型决定使用哪个方法。
用途提高了方法的灵活性。实现了运行时多态。
关键字无特定关键字。可以使用@Override注解来指明一个方法是重写的。

重载和重写是Java多态性的两种表现形式,它们都是实现代码复用和提高代码可维护性的重要手段。

  1. 应用上下文:重写发生在两个类(父子类)之间,而重载则发生在同一个类内。
  2. 参数列表:重写要求方法签名(名称+参数列表)必须相同,而重载则要求方法签名必须不同。
  3. 访问权限:重写方法的访问权限不能比被重写方法的访问权限更严格,而重载方法的访问权限可以不同。
  4. 返回类型:重写方法的返回类型必须和被重写方法的返回类型兼容,而重载方法的返回类型可以不同。

理解这两个概念并能够正确地在Java程序中使用它们,对于编写高效、可读性强的Java代码至关重要。

  • 35
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

StoilSweet

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值