官术网_书友最值得收藏!

1.7 Overload和Override的區別

Overload(重載)和Override(覆蓋)是Java多態性的不同表現。其中,Overload是在一個類中多態性的一種表現,是指在一個類中定義了多個同名的方法,它們或有不同的參數個數或有不同的參數類型。在使用重載時,需要注意以下幾點:

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

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

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

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

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

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

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

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

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

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

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

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

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

主站蜘蛛池模板: 鱼台县| 崇信县| 大丰市| 宁乡县| 余姚市| 蓬莱市| 康乐县| 巴林左旗| 新乡市| 七台河市| 乐至县| 田阳县| 阜平县| 弥渡县| 晋江市| 长宁县| 射阳县| 门源| 齐齐哈尔市| 永州市| 贵港市| 宁都县| 汾阳市| 定安县| 新平| 临武县| 高邮市| 岑溪市| 封丘县| 乐山市| 阿克陶县| 商河县| 临桂县| 南江县| 广灵县| 井冈山市| 黔西县| 秦皇岛市| 海阳市| 随州市| 合山市|