Java中的方法覆蓋(Overriding)和方法重載(Overloading)是什么意思?


  方法覆蓋也稱為重寫,重寫即子類重新定義了父類的方法。

重寫:

  1、重寫的方法必須與原方法有相同的方法名、參數列表和返回值類型(Java SE5之后返回值類型可以是其類型的子類型)

  2、被重寫的方法不能是final類型,因為final類型無法重寫

  3、被重寫的方法不能是private,因為private無法繼承,而繼承是重寫的前提

  4、被重寫的方法不能為static, 如果父類中的方法為靜態,而子類的方法不是靜態的,但是兩個方法除了這一點其他都滿足重寫條件,那么會發生編譯錯誤,                 反之亦然。如果子類和父類中的方法都是靜態的,並且滿足重寫條件,但仍然不會發生重寫,因為靜態方法是在編譯時把靜態方法和類的引用進行匹配。

  5、重寫的方法的訪問權限不能小於原方法

  6、重寫拋出的異常的范圍不能大於原方法

  7、重寫是在運行是發生的,JVM會在代碼運行時作出決定。

 

  方法重載簡稱重載,重載即同一個類中兩個或多個方法名相同但參數不同的情況

重載:

  1、方法名必須相同

  2、參數列表必須不同(參數的個數,類型,順序不同)

  3、方法的返回類型可以相同也可以不同

  4、僅僅返回值類型不同不足以成為方法的重載

  5、重載是發生在編譯時的,因為編譯器可以根據參數類型來選擇使用哪個方法

 

重寫和重載的區別:

  1、重寫只能用於子類重寫父類的方法,而重載用於同一類中的所有方法

  2、重寫的參數列表必須相同,重載的參數列表必須不同

  3、重寫要求返回值類型必須一致或是其子類,重載沒有要求

  4、重寫對方法的訪問權限和拋出異常有特殊的要求,而方法的重載沒有這方面的限制

  5、父類的方法只能被同一子類重寫一次,而一個方法可以在所有類中被重載很多次

  6、重寫是運行時的多態,重載是編譯時的多態


免責聲明!

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



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