在Java中,重寫(override)和重載(overload)是兩個常見的概念,它們都是實現多態的方式。但是,它們之間有幾個重要的區別。
首先,重載指的是在同一類中定義了多個方法,它們的方法名稱相同,但是參數列表不同。示例代碼如下:
public class Calculator { public int add(int x, int y) { return x + y; } public int add(int x, int y, int z) { return x + y + z; } }
在上面的代碼中,我們定義了兩個add方法,一個需要兩個參數,一個需要三個參數。雖然它們都叫add,但是Java根據參數的類型和數量,通過重載機制區分了它們。
與此不同的是,重寫(override)指的是子類重寫父類中的方法,使得子類的方法和父類方法具有相同的名稱和參數列表。示例代碼如下:
public class Animal { public void move() { System.out.println("Animal can move!"); } } public class Dog extends Animal { public void move() { System.out.println("Dog can run and walk!"); } }
在上面的代碼中,子類Dog重寫了父類Animal中的move方法。當我們在程序中創建Dog對象,并調用move方法時,實際調用的是Dog類中的move方法。這就體現了子類的多態性。
總體來說,重載是根據參數列表區分方法的不同版本,而重寫是子類覆蓋了父類的方法。兩者都是多態性的表現形式,但是各自的實現方式是不同的。
上一篇css換行符是