Java中的重載和重寫是兩個重要的概念,在OOP編程中占有重要地位。
重載是指在同一個類中,存在多個以同名的方法,但參數列表不同,嚴格來講是函數名相同但是參數列表不同的方法構成了函數的重載,根據參數列表的不同,可以有不同的方法實現,通過參數類型、參數個數、參數順序等因素來辨別方法的唯一性,Java會依據參數類型和順序決定具體調用哪個方法,實現了多態性。
public class Overload{ public void method(int a,int b){ System.out.println("Method(int a,int b) is called."); } public void method(String s){ System.out.println("Method(String s) is called."); } public void method(int a,double b){ System.out.println("Method(int a,double b) is called."); } }
重寫是指在子類中存在一個與父類方法名、參數列表都完全相同的方法,這個過程稱為方法的重寫(也稱作方法的覆蓋)。重寫實現了父類方法的多態性,子類可以根據自身特性實現自己的邏輯。
public class Parent{ public void method(){ System.out.println("Method from Parent is called."); } } public class Child extends Parent{ public void method(){ System.out.println("Method from Child is called."); } }
總體來說,重載和重寫都可以實現多態性,但是實現的方式不同。重載是在同一個類中根據方法參數的不同來實現多態性,而重寫則是在繼承體系中,子類實現與父類簽名相同的方法,從而實現多態性。