重載與重寫的區別

1、重載

若是同一個類中包含了兩個或兩個以上方法名相同、但有有不一樣的參數列表,則稱爲方法的重載,也可稱該方法被重載了。java

重載能夠理解爲一個類中的多態spa

說明:繼承

1.參數列表不一樣包括:個數不一樣、順序不一樣、類型不一樣
2.僅僅參數變量名稱不一樣是不能夠的。
3.跟成員方法同樣,構造方法也能夠重載。
4.聲明爲final的方法不能被重載。
5.聲明爲static的方法不能被重載,可是可以被在此聲明。io


方法的重載的規則
1.方法名稱必須相同。
2.參數列表必須不一樣。
3.方法的返回類型能夠相同也能夠不相同。
4.僅僅返回類型不一樣不足以稱爲方法的重載變量

2、重寫

1.方法的重寫: 子類出現了與父類相同方法名稱、參數列表和返回類型的方法,這個咱們就稱做爲方法的重寫。權限

2.方法重寫的前提: 必需要存在繼承的關係。引用

3.什麼是時候要使用方法的重寫:父類的功能沒法知足子類的需求時。方法

方法重寫要注意的事項異常

1.方法重寫時, 方法名與形參列表必須一致。 
2.方法重寫時,子類的權限修飾符必需要大於或者等於父類的權限修飾符。 
3.方法重寫時,子類的返回值類型必需要小於或者 等於父類的返回值類型。 
4.方法重寫時, 子類拋出的異常類型要小於或者等於父類拋出的異常類型。 Exception(最壞) static

當方法重寫時須要父類中原有的方法,可以使用super關鍵字,該關鍵字引用當前類的父類。

3、重載與重寫的區別

       重寫(Overriding)和重載(Overloading)是Java多態性的不一樣表現

       通常重寫針對子類繼承父類,重寫父類的方法,經過動態綁定;而重載是同一方法名,參數列表不一樣,重載能夠理解爲一個類中的多態。

       在java中重載是由靜態類型肯定的,在類加載時就能夠取肯定,屬於靜態分派;而重寫是由動態類型肯定的,是在運行時肯定的,屬於動態分派。動態分派是由虛方法實現的,虛方法表中存在着各個方法的實際入口地址,若父類中的某個子方法沒有被重寫,則父類與子類的方法表中的方法地址相同;若重寫了,則子方法表的地址指向重寫後的地址。

 

重寫與重載之間的區別

方法重載: 
一、同一個類中 
二、方法名相同,參數列表不一樣(參數順序、個數、類型) 
三、方法返回值、訪問修飾符任意 
四、與方法的參數名無關

方法重寫:  一、有繼承關係的子類中  二、方法名相同,參數列表相同(參數順序、個數、類型),方法返回值相同  三、訪問修飾符,訪問範圍須要大於等於父類的訪問範圍  四、與方法的參數名無關  

相關文章
相關標籤/搜索