重载(overloading)和重写(override)方法的区别(面试)

重载和重写只是java语法的一种规则,在《thinking in java》一书中也没有具体定义,记住规则即可。最简单的区别如下图:

具体的区别:

    重载体现了java编译时的多态性,覆写体现为运行时的多态性

  • 重载(overloading):一般用于在类中实现若干重载的方法,方法名相同而参数形式不同,以下是重载的规则:
  1. 使用重载时只能通过相同的方法名、不同的参数形式实现。不同的参数类型指参数类型、参数个数、不同的参数顺序。
  2. 不能通过访问权限、返回类型、抛出的异常进行重载,原因:因为当在调用时不能指定类信息(权限和返回值等等),编译器不知道你调用了哪个重载方法,这也是某一年名企华为的面试题。
  3. 方法的异常类型和数目不会对重载造成影响。
  • 重写(override):在继承和实现接口中应用的比较多,有如下几个规则:

    重写的方法除了访问权限不一致之外,其他的必须一致

 

  1. 重写的参数列表必须完全与被重写的方法相同,否则不能称其为重写。
  2. 重写方法的访问修饰符一定要大于被重写方法访问修饰符(public>protected>default>private)。
  3. 重写方法的返回值必须和被重写方法的返回值一致。
  4. 重写方法所抛出的异常必须和被重写方法所抛出的异常一致,或者是其子类关系。
  5. 被重写方法不能为private,否则在其子类只是定义了一个新方法,并没有对其进行重写。

 

重写的记忆方法:只有实现的功能代码不一致,其他的(函数名、参数列表、返回值类型)都必须一致。

补:当父类功能无法满足子类的功能需求时使用继承方式进行重写,实现接口的类中方法亦叫重写。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值