㈠ java中 通過子類怎麼調用父類已經被重寫的方法
在Java中,如果子類重寫了父類的方法,但仍然希望調用父類被重寫的方法,可以通過使用super關鍵字來實現。
答案如下:
子類重寫父類方法:
- 子類可以通過使用@Override註解來重寫父類的方法。這樣,當在子類的實例上調用該方法時,將執行子類的實現。
調用父類被重寫的方法:
- 在子類中,可以通過super.方法名的方式來調用父類被重寫的方法。這允許子類在執行自己的邏輯之前或之後,調用父類的相應方法。
示例代碼說明:
- 在提供的示例代碼中,Parent類有一個who方法,列印出”I’m parent”。
- Child類繼承了Parent類,並重寫了who方法,列印出”I’m child”。
- Child類還定義了一個parentWho方法,在該方法中通過super.who調用了父類的who方法。
- 在main方法中,創建了Parent和Child的實例,並分別調用了它們的who方法。此外,還通過Child的實例調用了parentWho方法,以展示如何通過super調用父類被重寫的方法。
執行結果:
- parent.who; 將輸出 “I’m parent”。
- child.who; 將輸出 “I’m child”。
- child.parentWho; 將輸出 “I’m parent”,因為這是在子類中通過super.who調用的父類方法。
通過這種方式,子類可以在需要時調用父類的實現,同時保留重寫方法的靈活性。
㈡ Java中方法重寫和方法重載的6個區別
Java中方法重寫(Override)和方法重載(Overload)的6個區別如下:
1. 概念定義
- 方法重寫:是子類重新定義父類中已有的方法,且子類中的方法名和參數類型及個數都必須與父類保持一致。
- 方法重載:是在同一個類中定義了多個同名方法,但這些同名方法的參數類型或參數個數不同。
2. 使用范圍
- 方法重寫:發生在父類與子類之間,是子類對父類方法的重新實現。
- 方法重載:發生在同一個類中,是類中方法的多樣化實現。
3. 關鍵字
- 方法重寫:在子類的方法定義前需要使用@Override註解(雖然不是必須的,但推薦使用以提高代碼可讀性),表明該方法是對父類方法的重寫。
- 方法重載:不需要使用任何特殊的關鍵字或註解,僅通過方法名和參數的不同來區分。
4. 參數類型和參數個數
- 方法重寫:子類重寫的方法必須與父類方法具有完全相同的參數類型和參數個數。
- 方法重載:同一個類中重載的方法可以有不同的參數類型和/或參數個數。
5. 返回類型
- 方法重寫:子類重寫的方法的返回類型可以是父類方法返回類型的子類型(即協變返回類型),但不能是父類返回類型的父類型或其他不相關的類型。在Java 5及以後的版本中,允許協變返回類型。
- 方法重載:重載方法的返回類型可以相同,也可以不同,但返回類型不是重載的區分條件。
6. 異常處理和許可權控制符
- 方法重寫:子類重寫的方法不能拋出比父類方法更多或更廣泛的檢查型異常(checked exception)。同時,子類方法的許可權控制符不能比父類方法的許可權控制符更嚴格(例如,父類方法是public,子類方法不能是protected或private)。
- 方法重載:重載方法之間可以拋出不同的異常,也可以有相同的異常處理。重載方法的許可權控制符也可以不同,但這與重載的定義無關,只是方法的不同實現。
以下是相關圖片展示,幫助理解方法重寫和方法重載的區別:

綜上所述,方法重寫和方法重載在Java中都是多態性的體現,但它們在概念、使用范圍、關鍵字、參數類型和參數個數、返回類型以及異常處理和許可權控制符等方面存在明顯的區別。
㈢ java中方法重寫和重載的區別
在Java中,方法重寫和方法重載是兩個重要的概念,它們雖然名字聽起來相似,但在實現方式和應用場景上有著本質的區別。
方法重寫是指子類繼承自父類後,對父類中已經存在的方法進行重新定義。重寫的方法必須滿足三個條件:方法名、參數列表和返回類型必須與父類中被重寫的方法完全一致。例如,如果父類定義了一個方法public String fun(),子類可以繼承此方法並重寫為public String fun(),但子類方法返回的字元串會是「son」而非「father」。
而方法重載則是指在一個類中定義多個同名但參數不同的方法。重載的方法可以是對本類方法的重載,也可以是對父類方法的重載。例如,在同一個類中可以定義public String fun(int a)、public String fun(String b)、public String fun(int a, String b)等方法,這些方法雖然名稱相同,但參數列表不同。
值得注意的是,方法重載在實現時並不考慮訪問修飾符和返回值類型,只要方法名和參數列表不同即可。因此,public String fun(int a)和public String fun(String b)是重載關系,而public String fun(int a)和public String fun(int b)則不是。
理解方法重寫和重載對於編寫高質量的Java代碼至關重要。正確使用這兩個概念可以幫助開發人員更好地組織代碼結構,提高代碼的可讀性和可維護性。