方法重载与重写

方法重载与重写

方法重载与重写

一、方法重载

一个类中如果有多个方法有相同的名字不同的参数(参数数量不同、类型不同、大小不同),便产生了重载(overloaded)。比如,在下面的 Person 类中,便完成了构造器的重载。

class Person {
    private String name;
    private int age;
    
    public Person(String name) {
        this.name = name;
    }
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
}

在 Java 中,所有方法都可以重载,因此,要完整的描述一个方法,必须使用方法的签名。方法的签名就是方法名 + 参数类型,比如上面的构造器的签名就是:

Person(String)
Person(String, int)

二、方法重写

如果在子类中定义了一个与超类方法的方法签名相同的方法,那么子类中的这个方法就重写(override)了超类中的方法。重写也可以叫做覆盖

返回类型是原返回类型或者是原返回类型的子类。

子类重写超类方法时,子类方法的可见性不可以低于超类。比如超类方法用 public 修饰,子类方法也要用 public 修饰。

超类中的方法如果用 final 修饰,那么子类是无法重写该方法的

子类中的方法抛出的异常不能高于超类。

三、方法重载与重写的对比

重载重写(覆盖)
在同一个类在同一个类不在同一个类
方法名相同相同
方法参数列表不同相同
返回类型无要求原返回类型或原返回类型的子类类型
可见性无要求子类方法不低于超类方法
抛出异常无要求子类方法抛出的异常范围要小于等于超类方法
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值