Java是一門面向對象的編程語言,其最重要的一個特征就是多態性的實現。在這種情況下,重載和重寫這兩個概念是與多態性密不可分的。
重載:重載是指在同一個類中定義多個方法,而這些方法有著相同的方法名,但是這些方法的參數列表不同。重載的實現需要依據參數的不同,去區分這些方法并調用正確的方法。比如,以下就是一個重載的代碼:
public class Overload{ public void show(String s){ System.out.println("String s: " + s); } public void show(int i){ System.out.println("int i: " + i); } }
這個代碼中,有兩個show方法,一個接收字符串類型的參數,一個接收整形參數。不同的參數類型會使得Java編譯器調用不同的方法。
重寫:重寫是指在子類中重新定義其父類的方法。重寫方法的簽名必須與被重寫方法的簽名相同,也就是說方法名和參數列表都相同,返回類型也必須一致。
public class Animal { public void shout() { System.out.println("Animal shout"); } } public class Dog extends Animal { @Override public void shout() { System.out.println("Dog shout"); } }
在這個例子中,Dog類重寫了Animal類中的shout()方法。這里的多態性在于,在程序執行時,如果我們聲明了一個Animal類型的對象,但是實際上運行的是Dog類的shout()方法。
因此,我們可以得出結論:
- 重載和重寫是Java的兩種不同的多態形式。
- 重載是編譯時多態,而重寫是運行時多態。