试题
考点

java语言-面向对象编程OOP-多态和执行顺序

面5笔5

java重载和重写的区别?

前往“校招VIP”小程序,刷题更快
最新校招难题刷题,快来进刷题群吧
解答

重载指方法名称相同,但参数类型个数不同,是行为水平方向不同实现。
对编译器来说,方法名称和参数列表组成了一个唯一键,称为方法签名,JVM 通过方法签名决定调用哪种重载方法。
不管继承关系如何复杂,重载在编译时可以根据规则知道调用哪种目标方法,因此属于静态绑定。

JVM 在重载方法中选择合适方法的顺序:

① 精确匹配。
② 基本数据类型自动转换成更大表示范围。
③ 自动拆箱与装箱。
④ 子类向上转型。
⑤ 可变参数。

重写指子类实现接口或继承父类时,保持方法签名完全相同,实现不同方法体,是行为垂直方向不同实现。

元空间有一个方法表保存方法信息,如果子类重写了父类的方法,则方法表中的方法引用会指向子类实现。
父类引用执行子类方法时无法调用子类存在而父类不存在的方法。

重写方法访问权限不能变小,返回类型和抛出的异常类型不能变大,必须加 @Override 。

评论

阿夏桑

2021-11-03 21:00:00

0 0

加载更多