Java中的重寫和重載是兩個非常重要的概念,它們在編寫程序時經(jīng)常出現(xiàn)。雖然它們看起來相似,但實際上它們有很大的區(qū)別。
重寫 (Override):
重寫是指子類繼承自父類的方法,在子類中重新定義該方法的過程。子類和父類的方法名、參數(shù)列表及返回值類型完全相同,但是方法體不同。這個過程需要使用 @Override 關(guān)鍵字來標記該方法,表示方法在子類中被重寫了,同時它也會方便編譯器來檢查是否有正確的重寫了。例如: class Animal { public void makeSound() { System.out.println("The animal makes a sound"); } } class Dog extends Animal { @Override public void makeSound() { System.out.println("The dog barks"); } }
重載 (Overload):
重載是指在同一個類中,允許存在多個同名方法,但是每個方法有不同的參數(shù)個數(shù)、類型或者順序。在使用時根據(jù)傳入?yún)?shù)的不同,選擇相應(yīng)的方法。重載方法可以有不同的返回類型,但是不能僅僅是返回類型不同,而參數(shù)相同,否則會出現(xiàn)編譯錯誤。例如: public class Calculator { public int add(int a, int b) { return a + b; } public int add(int a, int b, int c) { return a + b + c; } }
總結(jié):
重寫和重載兩者都是 Java 支持的多態(tài)性的表現(xiàn)。它們有相同點也有不同點:
- 相同點:方法名相同。
- 不同點:參數(shù)列表不同、方法體不同、返回類型不同。
通過以上分析可知,重寫是針對繼承關(guān)系中父子類的,而重載是在同一個類中針對方法的。重寫的方法名、參數(shù)列表、返回值類型均與父類相同,方法體不同;而重載的方法名相同,但是參數(shù)列表、返回值類型可能不同。在使用時,要注意根據(jù)實際情況選擇正確的方法。