一、什麼是重載(overlording)
在JAVA中,可以在同一個類中存在多個函數,函數名稱相同但參數清單不同。這就是函數的重載(overlording)。這是類的多太性表現之一。
二、重載的作用:
舉個現實生活中的執行個體。假如你是個木工,我要讓你制作桌子(傳回值)。然後,我給了你紫檀木,你就可以制作一張紫檀桌子;我給了你黃花梨,你可以做黃花梨的桌子。這些不同材質的木料,就是參數。傳回的都是桌子,但是具體使用哪個函數,就根據傳入的木料不同來決定的。
是以,可以根據所傳遞進來的不同參數,決定具體調用哪個函數。提高了函數使用的靈活性。
三、重載的特征:
函數名和傳回值類型完全一緻。
參數的數量不同、或數量相同而類型和次序不同,以友善JVM區分到底調用哪個函數。
四、重寫Overriding
“重載”不同于“重寫”
“重寫(覆寫)”概念存在于繼承關系中,子類可繼承父類中的方法而不需要單獨編輯,這提供便捷化。但有的時侯,子類不想原封不動地繼承父類的方法,而是想作一定的修改,這就需要采用方法的重寫。
父類中存在一個函數,子類中也存在一個同名函數,在了類中對函數重新編輯,做得更具體化。
重寫的規則:
1、在子類中可以根據需要對從父類中繼承來的方法進行重寫。
2、重寫的方法和被重寫的方法必須具有相同方法名稱、參數清單和傳回類型。
3、重寫方法不能使用比被重寫的方法更嚴格的通路權限。
五、執行個體:
建立MyClass類,其中包含兩個類,方法名一樣,參數不一樣
packagestudy;//MyClass類中,有兩個print方法,但是參數不一樣,實作了重載
public classMyClass {public voidprint(String name){
System.out.println("姓名:"+name);
}public void print(String name,intage){
System.out.println("姓名:"+name+"\t年齡:"+age);
}
}
執行個體化MyClass類:
import study.*;public classMyTest {public static voidmain(String[] args)
{
MyClass c=newMyClass();
c.print("張三");
c.print("李四",20);
}
}
輸出結果:
姓名:張三
姓名:李四 年齡:20
如果函數名和參數類型一緻,但函數傳回值類型不一樣,這不叫重載,這是一種錯誤寫法。
因為函數名和參數類型一緻時,JAVA編輯器不知道要傳回哪個結果,是以這種情況是不允許的,如以下代碼為錯誤代碼
package study;
public class MyClass {
public void print(String name){
System.out.println("姓名:"+name);
}
public int print(String x){
System.out.println("姓名:"+name+"\t年齡:"+age);
return 1;
}
}
方法重複,錯誤。