什么是方法的重載?
方法重載是以統(tǒng)一的方式處理不同數(shù)據(jù)類型的一種手段。
怎樣構(gòu)成方法的重載?
方法名相同, 形參不同。而形參的不同又表示在: 1). 形參的個數(shù)不同 2). 形參的類型不同 3). 形參的順序不同
注意事項
1. 如果兩個方法的返回值不同, 而其他都相同。 這個時候并不構(gòu)成方法的重載。 在編譯的時候會報錯:
示例代碼(錯誤):Test.java
/*返回值的不同并不能構(gòu)成方法的重載*/
public class Test {
public static void main(String[] args) {
}
}
class A {
public void f() { //返回值為 void
}
public int f() { //返回值為 int, 其他和上面的f()方法是一樣的
return 1;
}
}
錯誤信息:
Test.java:12: error: method f() is already defined in class A
public int f() {
^
1 error
2. 構(gòu)造方法和普通方法一樣, 也可以方法重載。
示例代碼(正確): Test.java
/* 方法的重載
* 輸出結(jié)果:
* public A() {} 這個構(gòu)造方法被調(diào)用了
* public A(int i) {} 這個構(gòu)造方法被調(diào)用了
* public void f() {} 這個構(gòu)造方法被調(diào)用了
* public void f(int i) {} 這個構(gòu)造方法被調(diào)用了
*/
public class Test {
public static void main(String[] args) {
A aa1 = new A(); //調(diào)用9行那個方法
A aa2 = new A(1); //調(diào)用13行那個方法
aa1.f(); //調(diào)用17行那個方法
aa2.f(1); //調(diào)用21行那個方法
}
}
class A {
public A() { //9行
System.out.printf("public A() {} 這個構(gòu)造方法被調(diào)用了\n");
}
public A(int i) { //13行
System.out.printf("public A(int i) {} 這個構(gòu)造方法被調(diào)用了\n");
}
public void f() { //17行
System.out.printf("public void f() {} 這個構(gòu)造方法被調(diào)用了\n");
}
public void f(int i) { //21行
System.out.printf("public void f(int i) {} 這個構(gòu)造方法被調(diào)用了\n");
}
}