方法重載和重寫是什么?有什么區別?


重寫:在子類中將父類的成員方法的名稱保留,重新編寫成員方法的實現內容,更改方法的訪問權限,修改返回類型的為父類返回類型的子類。


一些規則:
重寫發生在子類繼承父類
參數列表必須完全與被重寫方法的相同
重寫父類方法時,修改方法的權限只能從小范圍到大范圍
返回類型與被重寫方法的返回類型可以不相同,但是必須是父類返回值的子類(JDK1.5 及更早版本返回類型要一樣,JDK1.7 及更高版本可以不同)
訪問權限不能比父類中被重寫的方法的訪問權限更低。如:父類的方法被聲明為 public,那么子類中重寫該方法不能聲明為 protected
重寫方法不能拋出新的檢查異常和比被重寫方法申明更寬泛的異常(即只能拋出父類方法拋出異常的子類)
聲明為 final 的方法不能被重寫
聲明為 static 的方法不能被重寫
聲明為 private 的方法不能被重寫

 

重載:一個類中允許同時存在一個以上的同名方法,這些方法的參數個數或者類型不同

重載條件

  • 方法名相同
  • 參數類型不同 或 參數個數不同 或 參數順序不同

規則
被重載的方法參數列表(個數或類型)不一樣
被重載的方法可以修改返回類型
被重載的方法可以修改訪問修飾符
被重載的方法可以修改異常拋出
方法能夠在同一個類中或者在一個子類中被重載
無法以返回值類型作為重載函數的區分標准

 

重載和重寫的區別

  • 作用范圍:重寫的作用范圍是父類和子類之間;重載是發生在一個類里面
  • 參數列表:重載必須不同;重寫不能修改
  • 返回類型:重載可修改;重寫方法返回相同類型或子類
  • 拋出異常:重載可修改;重寫可減少或刪除,一定不能拋出新的或者更廣的異常
  • 訪問權限:重載可修改;重寫一定不能做更嚴格的限制



  

來一道刷了進BAT的面試題?


免責聲明!

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



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