Java中方法的重载和重写

重载(Overload)

在一个类中,当有两个或两个以上方法名相同,
但形参列表不同(形参个数或类型不同,或二者均不同)称为方法的重载。
方法的重载与返回值类型无关。

重写(Override)

当子类继承了父类的方法,但方法体不适用于子类,此时进行方法的重写。

要求:

  1. 方法名:必须和父类被重写的方法名相同

  2. 形参列表:必须和被重写的形参列表相同

  3. 返回值类型:

    基本数据类型和void:要求与父类被重写的方法相同

    引用数据类型:子类重写的返回值类型<=父类被重写的返回值类型

    ​ 就是,子类返回值类型是Student,父类返回值类型是Person这样的

  4. 修饰符:

    权限修饰符:子类重写的方法权限修饰符可见范围>=父类被重写的方权限修饰符可见范围

  5. 异常类型:
    子类重写的方法抛出的异常类型必须<=父类被重写的异常类型
    原因?
    多态的问题,编译时看父类型,catch捕获的是父类的异常类型,如果子类的异常>父类,catch抓不住。返回值类型<=同理

多态

重载和重写都是实现多态的方式。
但重载是一个类中多态的体现,在类加载时就已经确定,属于静态分派;
而重写是继承中多态的体现,是运行时多态性,属于动态分派。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值