重載與重寫的區別是什么?
重載和重寫的區別有以下幾點:
一、定義上的區別:
1、重載是指不同的函數使用相同的函數名,但是函數的參數個數或類型不同。調用的時候根據函數的參數來區別不同的函數。
2、覆蓋(也叫重寫)是指在派生類中重新對基類中的虛函數(注意是虛函數)重新實現。即函數名和參數都一樣,只是函數的實現體不一樣。
二、規則上的不同:
1、重載的規則:
①必須具有不同的參數列表。
②可以有不同的訪問修飾符。
③可以拋出不同的異常。
2、重寫方法的規則:
①參數列表必須完全與被重寫的方法相同,否則不能稱其為重寫而是重載。
②返回的類型必須一直與被重寫的方法的返回類型相同,否則不能稱其為重寫而是重載。
③訪問修飾符的限制一定要大于被重寫方法的訪問修飾符。
④重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常。 三、類的關系上的區別: 重寫是子類和父類之間的關系,是垂直關系;重載是同一個類中方法之間的關系,是水平關系。