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