重載與重寫的區別 java中的重載就是在類中創建多個同名方法,但是方法簽名(參數列表)不同,返回值可以相同也可以不相同(不能使用返回值區分方法的重載),方法體也不同。 1)發生在同一個類中,方法名稱相同,參數列表不同 2)編譯器在編譯時會根據方法的簽名自動綁定方法 重寫: 1)發生在父子類中,方法名 ...
重載與重寫的區別
java中的重載就是在類中創建多個同名方法,但是方法簽名(參數列表)不同,返回值可以相同也可以不相同(不能使用返回值區分方法的重載),方法體也不同。
1)發生在同一個類中,方法名稱相同,參數列表不同
2)編譯器在編譯時會根據方法的簽名自動綁定方法
重寫:
1)發生在父子類中,方法名稱相同,參數列表相同,方法體不同
2)重寫方法被調用時,看對象的類型
簡單說,就是同樣的一個方法能夠根據輸入數據的不同,做出不同的處理,即方法的
重載——有不同的參數列表(靜態多態性)
而當子類繼承自父類的相同方法,輸入數據一樣,但要做出有別於父類的響應時,你就要覆蓋父類方法,
即在子類中重寫該方法——相同參數,不同實現(動態多態性)
重寫方法的規則:
1、參數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。
2、返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。
3、訪問修飾符的限制一定要大於被重寫方法的訪問修飾符(public>protected>default>private)
4、重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。
而重載的規則:
1、必須具有不同的參數列表;
2、可以有不責罵的返回類型,只要參數列表不同就可以了;
3、可以有不同的訪問修飾符;
4、可以拋出不同的異常;
重寫與重載的區別在於:
1)重寫(Override):
1.1)發生在父子類中,方法名稱相同,參數列表相同,方法體不同
1.2)遵循"運行期綁定",看對象的類型來調用方法
2)重載(Overload):
2.1)發生在一個類中,方法名稱相同,參數列表不同,方法體不同
2.2)遵循"編譯期綁定",看引用的類型來綁定方法