一、 在Java 中,同一个类中的2个或2个以上的方法可以有同一个名字,只要它们的参数声明不同即可。在这种情况下,该方法就被称为重载(overloaded ),这个过程称为方法重载(method overloading )。方法重载是Java 实现多态性的一种方式。
当一个重载方法被调用时,Java 用参数的类型和(或)数量来表明实际调用的重载方法的版本。因此,每个重载方法的参数的类型和(或)数量必须是不同的。虽然每个重载方法可以有不同的返回类型,但返回类型并不足以区分所使用的是哪个方法。当Java 调用一个重载方法时,参数与调用参数匹配的方法被执行。
当一个重载的方法被调用时,Java 在调用方法的参数和方法的自变量之间寻找匹配。但是,这种匹配并不总是精确的。在一些情况下,Java 的自动类型转换也适用于重载方法的自变量。
方法重载支持多态性,因为它是Java 实现“一个接口,多个方法”范型的一种方式。
当你重载一个方法时,该方法的每个版本都能够执行你想要的任何动作。没有什么规定要求重载方法之间必须互相关联。但是,从风格上来说,方法重载还是暗示了一种关系。这就是当你能够使用同一个名字重载无关的方法时,你不应该这么做。例如,你可以使用sqr这个名字来创建一种方法,该方法返回一个整数的平方和一个浮点数值的平方根。但是这两种操作在功能上是不同的。按照这种方式应用方法就违背了它的初衷。在实际的编程中,你应该只重载相互之间关系紧密的操作。
二、方法的调用
方法定义的目的,就是要给其他人使用。多数情况下,使用方法需要进行显示的方法调用。方法被调用之后,就会执行方法体内部的语句,完成预定义的功能。
根据方法的调用者与被调用的方法所处的位置,方法调用的形式可以分为两种:
1、调用者和被调用方法位于同一类中,形式如下:
[this.]方法名([实际参数列表])
在大多数情况下,关键字this可以省略。
2、 调用者位于被调用方法所在类的外部,形式如下:
对象名.方法名([实际参数列表]) 或者 类名.方法名([实际参数列表])
实际参数列表是对应方法的形式参数列表,可以是0个或多个变量或表达式,如果超过一个,需用逗号分隔。
三、方法调用的参数
在定义一个方法时,程序员可能会根据需要列出一个参数表,这些参数被称为形式参数,简称为形参。在调用方法时,需要调用者提供与之相匹配的参数表,被称为实际参数,简称为实参。
这里的匹配有两个条件:
1、 实参和形参的个数要相等。
2、 实参和形参对应位置上的数据类型要相容。即数据类型相同,或者实参可以做自动类型转换转换成形参类型。
在方法调用发生时,系统会将实参的值按照位置关系一个一个传递给形参,即第一个实参传给第一个形参,第二个实参传给第二个形参,……这个过程中,不会考虑形参和实参的名字。