天天看点

java overloadoverload

overload

个人理解:

方法名相同,参数列表(参数数量、参数类型、参数顺序)不同。

方法匹配:

对于参数类型应根据准确性原则进行判断,即参数尽量少进行类型自动向上转换。

特殊情况:

当参数中出现int、float、double基本数据类型时,参数顺序对参数列表的影响情况是不确定的,

解决办法:

具体可通过以下原则进行识别:

1、int类型可自动转换为float、double,即参数类型为float、double时可以向方法里传入int类型,

2、在通过参数类型进行匹配时满足准确性原则(如:int类型的参数应优先考虑float类型进行接收),需注意:3.3是 double类型而不是float类型,

3、如果在方法中出现了多个基本数据类型,分别对每个参数进行上面两种方式进行确定,如果每个参数匹配到方法都的交 集只有一个方法,则在运行时将会进入此方法,如果没有或不是同一个则编译不通过,

4、如果有Integer、Float、Double存在时,需明白这三个类是平级关系(即不存在继承关系,也就不会出现自动向上转 型),4只能自动装箱成Integer,如果想变成Float、Double类型需进行强制类型转换,同样2.2只能自动装箱成 Double,

5、针对存在继承关系的类型同时作为参数时,根据参数的引用类型通过准确性原则进行判别,此处需注意引用类型而不是 实际对象的类型,因为overload与override都是在编译的时候发生的。

继续阅读