Overload和Override的區別是什么?Overload的方法是否可以改變返回值的類型?


              答案:Overload(重載)和Override(覆蓋)是Java多態性的不同表現。其中,重載是在一個類中多態性的一種表現,是指在一個類中定義了多個同名的方法,它們或有不同的參數

個數或有不同的參數類型。在使用重載時,需要注意下幾點:

            1)重載是通過不同的方法參數來區分,例如不同的參數個數,不同的參數類型或不同的參數順序。

            2)不能通過方法的訪問權限,返回值類型和拋出的異常類型來進行重載。

            3)對於繼承來說,如果基類方法的訪問權限為private,那么就不能在派生類中對其進行重載,如果派生類也定義了一個同名的函數,這只是一個新的方法,不會達到重載的效果。

           Override是指派生類函數覆蓋基類函數,覆蓋一個方法並對其重寫,以達到不同的作用。使用覆蓋時,需要注意以下幾點:

          1)派生類中的覆蓋方法必須和基類中被覆蓋的方法有相同的函數名和參數。

          2)派生類中的覆蓋方法的返回值必須和基類中被覆蓋的方法的返回值相同。

         3)派生類中的覆蓋方法所拋出的異常必須和基類中被覆蓋的方法所拋出的異常一致或是其子類。

         4)基類中被覆蓋的方法不能為private,否則,其子類只是定義了一個方法,並沒有對其覆蓋。

         重載與覆蓋的區別主要有以下幾個方面:

         1)覆蓋是子類和父類之間的關系,是垂直關系;重載時同一個類中方法之間的關系,是水平關系。

         2)覆蓋只能有一個方法或只能由一對方法產生關系;方法的重載是多個方法之間的關系。

         3)覆蓋要求參數列表相同;重載要求參數列表不同。

         4)覆蓋關系中,調用方法體是根據對象的類型(對象對應存儲空間類型)來決定;而重載關系是根據調用時的實參表與形參表來選擇方法體的。

         如果在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型,則稱為方法的重載。Overload的方法是可以改變返回值的類型,但是Override方法不能改變返回值類型。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM