Java中,重載(Overload)和重寫(Override)是兩個常見的概念,但是它們之間有很大的區別。下面讓我們來看一下它們之間的區別。
重載(Overload)是指在同一個類中,方法名相同、參數列表不同的方法。Java會根據傳入不同的參數類型或個數自動選擇調用哪一個方法。例如:
public class OverloadDemo { public void methodA(int a) { //... } public void methodA(int a, int b) { //... } public void methodA(String s) { //... } }
重寫(Override)是指在子類中,重新定義了從父類繼承的方法。Java會自動選擇子類定義的方法執行。例如:
public class Animal { public void eat() { //... } } public class Cat extends Animal { public void eat() { //... } }
區別1:重載和重寫的方法名相同,但是參數列表不同或定義在不同的類中。
區別2:重載是在同一個類中,重寫是在繼承關系中不同的類中。
區別3:重載是編譯時多態,重寫是運行時多態。重寫實現子類對父類方法的擴展和重寫,子類不能縮小父類方法的訪問范圍。
區別4:重載方法可以返回不同類型的值,重寫方法返回的類型必須與父類方法的返回類型相同或是其子類。
區別5:重寫方法可以使用throws聲明新的異常,但不能使用新的checked異常,重載方法可以。
區別6:重載方法可以具有不同的訪問修飾符,但重寫方法必須具有相同的訪問修飾符或更寬松。
因此,重載和重寫雖然都可以實現多態性,但是它們的應用場景和實現方式卻有很大的不同。在編程中需要根據實際需求正確地選擇使用。