當前位置:菜譜大全網 - 素菜食譜大全 - 重寫和重載方法的區別

重寫和重載方法的區別

壹、方法重寫(0veriding)

在Java程序中,壹個類的繼承關系可以產生壹個子類,這個子類繼承了父類的所有特征,繼承了父類的所有方法和變量。

子類可以定義新的特性。當子類需要修改父類的某些方法來擴展和增加其功能時,程序員往往把這樣的操作方法稱為重寫,也叫覆蓋或覆蓋。

重寫體現了Java的優勢。改寫以繼承為基礎,豐富了語言結構。在Java的繼承中,子類可以隱藏和訪問父類的方法,也可以覆蓋繼承父類的方法。

Java中重寫繼承的父類的方法是通過重寫方法實現的。所謂方法重寫,就是子類中的方法與父類中繼承的方法具有完全相同的返回值類型、方法名、參數個數和參數類型。

這樣,父類的方法可以被重寫。如果子類重寫了父類中的方法,那麽調用時必須調用重寫的方法,那麽現在必須調用父類中的方法怎麽辦?

此時,可以使用超級鍵來實現該功能。超級鍵可以從子類中訪問父類的內容。如果妳想訪問重寫的方法,妳可以用“super”的形式調用它。方法名稱(參數列表)”。

如果要使用super關鍵字,方法重寫後就不壹定要用了,但是也可以明確表示壹個方法是從父類繼承的。使用super只是更加明確了如果妳想從父類中找到它,妳不會在子類中找到它。

第二,重寫規則

當重寫方法時,需要遵循以下規則:

(1)父類的方法的參數列表必須和子類重寫的方法的參數列表完全相同,否則不能叫重寫,只能叫重載。

(2)父類的返回類型必須和被子類覆蓋的方法的返回類型相同,否則不能叫重寫,只能叫重載。..

(Java中規定,子類重寫的方法不能比父類的方法有更嚴格的訪問權限。任何編寫過Java程序的人都會知道,

父類中的方法在任何情況下都不能重寫。當父類中方法的訪問修飾符是私有的時,該方法只能由其自己的類訪問。

它不能被外部類訪問,也不能在子類中重寫。如果定義父類的方法是public,而定義子類的方法是private,程序運行時會報告壹個錯誤。

(4)因為父類的訪問修飾符的限制必須大於子類重寫的方法的訪問修飾符,所以私有權限最小。

因此,如果壹個方法在父類中的訪問權限是私有的,它就不能在子類中被覆蓋。如果重新定義,只是定義了壹個新的方法,不會達到重寫的效果。

(5)如果父類中的方法在繼承過程中拋出異常,那麽在子類中重寫父類的方法時,也要拋出異常。

並且不能拋出比父類中拋出的更多的異常(可以等於父類中拋出的異常)。換句話說,重寫方法不能引發新的檢查異常。

或者是比被重寫的方法聲明範圍更廣的檢查異常。例如,父類的壹個方法聲明了壹個檢查異常IOException,並且在重寫此方法時不能引發異常。

只能拋出IOException的子類異常,可以拋出未檢查的異常。類似地,如果成員變量是在子類中創建的,

變量與父類中的變量同名,這稱為變量重寫或屬性重寫。但是這個概念很少有人研究,因為意義不大。

第三,方法重載(Overloading)

方法重載是壹種讓類以統壹的方式處理不同類型數據的手段。當調用方法時,我們通過給它們傳遞不同數量和類型的參數來決定使用哪個方法,這就是多態性。

所謂方法重載,是指在壹個類中,多個方法具有相同的方法名,但參數列表不同。不同的參數列表引用不同的參數編號、參數類型或順序。

方法的重載在實際應用中也會經常用到。不僅壹般方法可以重載,構造方法也可以重載。

重載方法時,方法之間需要有某種聯系,因為這樣可以提高程序的可讀性,壹般只有功能相似的方法才會被重載。

重載是指我們可以定義壹些同名的方法,通過定義不同的參數來區分,然後在再次調用的時候,Java虛擬機會根據不同的參數列表選擇合適的方法來執行。

。也就是說,當壹個重載的方法被調用時,Java使用參數的類型或個數來確定實際調用的重載方法。因此,每個重載方法的參數類型或數量必須不同。

雖然每個重載方法可以有不同的返回類型,但返回類型不足以區分使用的是哪個方法。

當Java調用壹個重載的方法時,其參數與調用參數相匹配的方法被執行。使用重載時,請註意以下幾點:

1.重載時只能使用不同的參數列表,必須有不同的參數列表。

2.它不能被訪問權限、返回類型和引發的異常重載。

3.方法異常的類型和數量不會影響重載。

4.只要參數列表不同,就可以有不同的返回類型。

5.您可以有不同的訪問修飾符。

6.可以拋出不同的異常。