Java方法的重载
Java
重载粗略地讲是Java
允许多个方法使用同一个方法名。比如
- 创建一个
Printer
类用来打印一个字符串,一个或者两个整数。
Printer.java
package method;
public class Printer {
public void print(String str) {
System.out.println("Print a string: " + str);
}
public void print(int a) {
System.out.println("Print an integer: " + a);
}
public void print(int a, int b) {
System.out.printf("Print two integers: %d and %d");
}
}
以上Printer
类包含了三个名称同为print
的方法,第一个print
方法传入一个String
参数,第二个传入一个int
参数,第三个传入两个int
参数,这在Java中是允许的,叫做Java方法的重载。
附录: 使用上述Printer类
OverloadExample.java
public class OverloadExample {
public static void main(String[] args) {
Printer printer = new Printer();
printer.print("A STRING"); // 使用print(String str)方法
printer.print(10); // 使用print(int a)方法
printer.print(10, 20); // 使用print(int a, int b)方法
}
}
重载的本质
Java
中一个类的方法是由 方法名 + 参数表 唯一确定的!- 相同的方法名 + 相同的参数表 被认为是相同的方法;一个类中不允许相同的方法存在!
- 不同方法名:是不同的方法;
- 相同的方法名,不同的参数表是不同的方法;
- 上述例子中,三个
print
方法,第一个的参数表是一个String
,第二个是一个int
,第三个是两个int
,参数表均不同,所以被认为是不同的方法,是允许的。
- 上述例子中,三个
换言之:如果方法名和参数表都一样,那么就会被认定为是同一个方法,方法是不允许重复定义的,所以Java会报错。
注.
判定两个方法是否相同,跟返回值没有关系!相同的方法名和参数表,不同的返回值是不被允许的!比如下述代码中虽然两个print方法返回值不同,但是会被Java认定为同一个方法,会报错。
package method;
public class Printer {
public void print(String str) {
System.out.println("Print a string: " + str);
}
public boolean print(String str) { // Java报错Duplicate method print(String) in type Printer
System.out.printf("Print a string %s and return a boolean", str);
}
}