
4.2 方法重载

方法重载是方法名称进行重用的一种技术形式,其最主要的特点为“方法名称相同,参数的类型或个数不同”,在调用时会根据传递的参数类型和个数不同执行不同的方法体。
如果说现在有一个方法名称,有可能要执行数据的加法操作,例如,一个sum()方法,它可能执行2个整数的相加,也可能执行3个整数的相加,或者可能执行2个小数的相加,很明显,在这样的情况下,一个方法体肯定无法满足要求,需要为sum()方法定义多个不同的方法体,所以此时就需要方法重载概念的支持。
范例:定义方法重载


本程序在主类中一共定义了3个sum()方法,但是这3个sum()方法的参数个数以及数量完全不相同,那么就证明此时的sum()方法已经被重载了。而在调用方法时,虽然方法的调用名称相同,但是会根据其声明的参数个数或类型执行不同的方法体,调用过程如图4-2所示。

图4-2 方法重载调用
提问:关于sum()方法的返回值问题。
在本程序进行sum()方法重载时有这样一个方法“public static int sum(double x,double y)”,该方法接收2个double参数,但是最终却返回了int型数据?
回答:方法重载时考虑到标准性一般都建议统一返回值类型。
在方法重载的概念里面并没有强制性地对方法的返回值进行约束,这意味着方法重载时返回值可以根据用户的需求自由定义,例如,对于sum()方法使用以下的方法定义也是正确的。

但是需要注意的是,一旦这样定义了,则对于方法返回值的接收也必须有相符合的类型,这样就会造成方法调用时的混淆问题,所以考虑到程序开发的标准型,在进行方法重载时大多数的程序都会统一方法的返回值类型。
实际上在Java提供的许多类库之中也都存有方法重载的使用,例如,屏幕信息打印“System.out.println()”中的println()方法(也包括print()方法)就属于方法重载的应用。
范例:观察输出操作的重载实现


本程序利用System.out.println()重载的特点分别输出了各种不同的数据类型信息,可以得出明显的结论:println()方法在JDK中实现了重载要求。