Java中的覆蓋(Override)和重載(Overload)是兩個不同的概念。
覆蓋是指子類重新定義了父類的方法,使得子類的方法與父類的方法具有相同的名稱、參數列表和返回類型。覆蓋用于實現多態性,即在運行時根據對象的實際類型來調用相應的方法。子類覆蓋父類的方法時,可以修改方法的實現,但不能改變方法的簽名(即方法的名稱、參數列表和返回類型)。覆蓋發生在繼承關系中,子類可以覆蓋父類的方法。
重載是指在同一個類中定義多個方法,它們具有相同的名稱但具有不同的參數列表。重載用于實現方法的多態性,即同一個方法名可以根據不同的參數列表來執行不同的操作。重載時,可以改變方法的參數個數、參數類型或參數順序,但不能改變方法的返回類型。重載發生在同一個類中,同一個方法名下,可以有多個不同的方法。
總結:
覆蓋是子類重新定義父類的方法,使其具有相同的名稱、參數列表和返回類型,發生在繼承關系中。
重載是在同一個類中定義多個方法,它們具有相同的名稱但具有不同的參數列表,發生在同一個類中。