Java中有兩個非常重要的概念,即覆寫(overriding)和重寫(overloading)。這兩個概念雖然名字很相似,但是它們在Java程序中的作用以及實現方式卻是不同的。
覆寫是指子類對父類中的某個方法進行重寫,使得子類中的方法覆蓋掉了父類中的同名方法。覆寫通過繼承實現,是實現多態的基礎。
// 父類A public class A { public void method() { System.out.println("父類A的方法"); } } // 子類B public class B extends A { @Override public void method() { System.out.println("子類B覆寫父類A的方法"); } } // 測試 A a = new B(); a.method(); // 輸出:子類B覆寫父類A的方法
在上面的例子中,子類B重寫(使用@Override注解修飾)了父類A中的method()方法。當我們創建了B的對象并調用它的method()方法時,會輸出子類B覆寫后的內容,而不是父類A的內容。
而重載(overloading)則是指在一個類中定義多個同名的方法,但它們的參數列表不同。當我們調用這個方法時,Java會根據調用的參數列表來決定具體調用哪個方法。重載和覆蓋的實現方式不同,重載是通過方法簽名來進行區分的。
public class C { public void method(int a) { System.out.println("方法1:" + a); } public void method(double a) { System.out.println("方法2:" + a); } public void method(String a) { System.out.println("方法3:" + a); } } C c = new C(); c.method(1); // 輸出:方法1:1 c.method(1.0); // 輸出:方法2:1.0 c.method("1"); // 輸出:方法3:1
在上面的例子中,我們定義了三個名為method()的方法,它們的參數列表分別是int、double、String。當我們調用這個方法時,Java會根據調用的參數類型來選擇具體調用哪個方法。
在Java中,覆蓋和重載是很重要的概念,它們在不同場合下都扮演著不同的角色。程序員需要了解它們的不同之處,并在實際編程中正確地使用它們。
下一篇css圖片上顯示數字