Java 的重载和重写,看这一篇就够了|8月更文挑战

·  阅读 72

这是我参与8月更文挑战的第4天,活动详情查看: 8月更文挑战

借 8 月更文挑战督促自己,感谢掘金!

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

访问权限

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

返回值类型和异常处理

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

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

参数列表

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

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

分类:
后端
标签:
分类:
后端
标签: