重载和重写的概念

重载(overload)和覆盖(override)是Java多态性的不同表达方式。

重载的概念:

重载是在一个类中多态性的一种表现,是指在一个类中定义了多个同名的方法,他们或有不同的参数个数或有不同类型的参数类型。重载是编译时多态。
使用重载时的用法:
一、重载是通过不同的方法参数来区分的,如不同的参数个数、不同的参数类型、不同的参数顺序
二、不能通过方法的访问权限,返回值类型和抛出的异常类型进行重载。
三、对于继承来说,如果父类方法访问权限为private,那么子类就不能对其重载;如果子类定义了一个同名方法,这只是一个子类的的新方法,不会有重载的效果。

重写的概念:

重写是指子类的方法覆盖父类方法,覆盖父类的方法并对其重写,已达到不同的效果。重写是运行时多态。
使用重写时的用法:
一、子类的重写方法必须要和父类的被重写方法有相同的函数名和参数。
二、子类的重写方法的返回值必须等于或小于父类类被重写方法的返回值,就是说子类的返回值类型可以是父类返回值类型 的子类或者与父类返回值类型一致。
三、子类的重写方法所抛出的异常必须与父类中的被重写方法的异常一致,或者是父类抛出异常的子类,不能比父类的异常范围更宽泛。
四、父类的private方法不能被重写,如果子类有同名方法,只是定义了一个新方法,并没有对父类方法重写。
五、子类重写方法的访问权限不能低于父类方法中的访问权限,即父类的访问权限是public,子类访问权限不能是protected、默认不写或者private。子类的访问权限可以高于父类。

重载与重写的区别:
一、重写时子类和父类的关系是垂直关系;重载是同一个类方法之间的关系,是水平关系。
二、重写只能由一个或者一对方法产生关系,重载是多个方法之间的关系。
三、重写要求参数列表相同,重载要求参数列表不同。
四、重写关系中,调用方法体是根据对象的类型(对象对应的储存空间类型)来决定;而重载关系是根据调用时的实参表和形参表来选择方法体。

重载和重写的应用场景:
在类中要以统一的方式处理不同的类型数据的时候可以用重载,例如构造方法的重载,可以提供多种形参类型的构造方法,以对不同的类型数据做处理;当父类的方法不再满足子类需求时可以通过子类对父类方法重写,这样既可以保留父类的功能,还可以有自己独特的功能。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值