Java 的重载和重写,看这一篇就够了

首先说结论,Java 中的重载和重写压根就不是一回事,难道面试经常被问到就是因为它们长的很像?Java 重载限定的范围是在一个类里面,而重写的话是指一个子类继承了父类,子类可以对父类中的非private方法进行重新定义。无论是重写还是重载,它们的函数名都是相同的,下面主要从参数列表、访问权限以及返回值类型来阐述两者之间的区别。

访问权限

对于访问权限,Java 重载不做任何要求,也就是说,访问权限修饰符可以相同也可以不同。但是对于重写来说,必须要求子类的方法的访问权限不能小于父类,也就是不能对访问修饰符做更加严格的限制。

返回值类型和异常处理

返回值类类型也是,Java 重载并没有对它做特殊的要求,返回值类型可以相同也可以不同。但是如果是重写的话,子类的返回值类型是有要求的。如果父类的返回值类型是基本数据类型,那么子类的返回值类型必须和父类一致。如果父类的返回值类型是引用数据类型,那么子类的返回值类型必须是父类的返回值类型或者父类返回值类型的子类

其实异常处理也是一样的,重写的的返回值一旦抛出,那么这个异常就不能是新的异常,或者抛出的异常不能是范围更加广泛的异常类。

参数列表

重写的本质是子类的相对比父类来说,子类有自己不同于父类的表现形式。也就是说,重写方法的外壳不变,对方法的核心内容进行重写。所以 Java 重写的参数列表必须得和父类保持一致,但是重载的话就不一样了,重载函数的参数列表必须不一致才行。

另外,由于水平有限,有错误的地方在所难免,未免误导他人,欢迎指正!码字不易,感谢大家的点赞关注!🙏

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值