1. 概述
在同一个类中,如果多个方法由相同的方法名称,不同的参数类型,参数个数,参数顺序,即称为重载.
2.执行顺序
在编译期的眼里,方法名称+参数列表,组成了一个唯一键,称为方法签名,JVM通过这个唯一键决定调用哪种重载的方法.
JVM在重载方法中,选择合适的目标方法的顺序如下:
- 精确匹配
- 如果是基本数据类型,自动转换成更大表示范围的基本类型.(int-long)
- 通过自动拆箱与装箱.
- 通过子类向上转型继承路线依次匹配.
- 通过可变参数匹配
注意: null可以匹配任何类对象,在查找目标方法时,是从最底层子类依次向上查找的.假如重载方法里有一个Object子类的参数的重载方法,会匹配到这个方法中,但是有多个这样的方法,则会编译出错,因为null 不知道该选择哪个方法.
父类的公有实例方法与子类的公有实例方法可以存着重载关系.不管继承关系如何复杂,重载在编译时可以根据规则知道调用哪种目标方法.所以,重载又称为静态绑定.