- 相關(guān)推薦
java方法重載
對(duì)于同一個(gè)類,如果這個(gè)類里面有兩個(gè)或者多個(gè)重名的方法,但是方法的參數(shù)個(gè)數(shù)、類型、順序至少有一個(gè)不一樣,這時(shí)候局構(gòu)成方法重載。
方法重載示例
public class Test{
public void a( ){
};
public void a( int i){
};
}
說(shuō)明:在Test類中有兩個(gè)方法,名字都相同,都是a。在調(diào)用方法a時(shí),如果不傳參數(shù),則系統(tǒng)會(huì)自動(dòng)調(diào)用第一個(gè)方法a,如果傳入一個(gè) int 類型的參數(shù),則系統(tǒng)調(diào)用第二個(gè)方法a。
2
public class Test{
public void a(int i){
};
public void a(String j){
};
}
說(shuō)明:在Test類中有兩個(gè)同名的方法a。在調(diào)用方法時(shí),如果傳入一個(gè)int類型的參數(shù),則會(huì)自動(dòng)調(diào)用第一個(gè)a方法,如果傳入一個(gè)String類型的參數(shù),則會(huì)自動(dòng)調(diào)用第二個(gè)方法a。
3
public class Test{
public void a(int i,String j){
}
public class a(String j,int i){
}
}
說(shuō)明:在Test類中有兩個(gè)同名的方法。在調(diào)用方法時(shí),如果傳入的第一個(gè)參數(shù)類型為int,第二個(gè)參數(shù)類型為String,則自動(dòng)調(diào)用第一個(gè)方法a。如果傳入的第一個(gè)參數(shù)為String類型,第二個(gè)參數(shù)類型為int,則自動(dòng)調(diào)用第二個(gè)方法a。
什么是方法的重載?
方法重載是以統(tǒng)一的方式處理不同數(shù)據(jù)類型的一種手段。
怎樣構(gòu)成方法的重載?
方法名相同, 形參不同。而形參的不同又表示在: 1). 形參的個(gè)數(shù)不同 2). 形參的類型不同 3). 形參的順序不同
注意事項(xiàng)
1. 如果兩個(gè)方法的返回值不同, 而其他都相同。 這個(gè)時(shí)候并不構(gòu)成方法的重載。 在編譯的時(shí)候會(huì)報(bào)錯(cuò):
示例代碼(錯(cuò)誤):Test.java
復(fù)制代碼 代碼如下:
/*返回值的不同并不能構(gòu)成方法的重載*/
public class Test {
public static void main(String[] args) {
}
}
class A {
public void f() { //返回值為 void
}
public int f() { //返回值為 int, 其他和上面的f()方法是一樣的
return 1;
}
}
錯(cuò)誤信息:
復(fù)制代碼 代碼如下:
Test.java:12: error: method f() is already defined in class A
public int f() {
^
1 error
2. 構(gòu)造方法和普通方法一樣, 也可以方法重載。
示例代碼(正確): Test.java
復(fù)制代碼 代碼如下:
/* 方法的重載
* 輸出結(jié)果:
* public A() {} 這個(gè)構(gòu)造方法被調(diào)用了
* public A(int i) {} 這個(gè)構(gòu)造方法被調(diào)用了
* public void f() {} 這個(gè)構(gòu)造方法被調(diào)用了
* public void f(int i) {} 這個(gè)構(gòu)造方法被調(diào)用了
*/
public class Test {
public static void main(String[] args) {
A aa1 = new A(); //調(diào)用9行那個(gè)方法
A aa2 = new A(1); //調(diào)用13行那個(gè)方法
aa1.f(); //調(diào)用17行那個(gè)方法
aa2.f(1); //調(diào)用21行那個(gè)方法
}
}
class A {
public A() { //9行
System.out.printf("public A() {} 這個(gè)構(gòu)造方法被調(diào)用了\n");
}
public A(int i) { //13行
System.out.printf("public A(int i) {} 這個(gè)構(gòu)造方法被調(diào)用了\n");
}
public void f() { //17行
System.out.printf("public void f() {} 這個(gè)構(gòu)造方法被調(diào)用了\n");
}
public void f(int i) { //21行
System.out.printf("public void f(int i) {} 這個(gè)構(gòu)造方法被調(diào)用了\n");
}
}
【java方法重載】相關(guān)文章:
方法重載的條件09-23
什么是方法重載11-15
方法重載與覆蓋的區(qū)別11-04
方法重載和方法重寫的概念和區(qū)別09-06
方法重載和方法重寫的區(qū)別是什么11-16
java技術(shù)的學(xué)習(xí)方法10-07
Java學(xué)習(xí)方法有哪些10-06