若是同一個類中包含了兩個或兩個以上方法名相同、但有有不一樣的參數列表,則稱爲方法的重載,也可稱該方法被重載了。java
重載能夠理解爲一個類中的多態spa
說明:繼承
1.參數列表不一樣包括:個數不一樣、順序不一樣、類型不一樣。
2.僅僅參數變量名稱不一樣是不能夠的。
3.跟成員方法同樣,構造方法也能夠重載。
4.聲明爲final的方法不能被重載。
5.聲明爲static的方法不能被重載,可是可以被在此聲明。io
方法的重載的規則:
1.方法名稱必須相同。
2.參數列表必須不一樣。
3.方法的返回類型能夠相同也能夠不相同。
4.僅僅返回類型不一樣不足以稱爲方法的重載變量
1.方法的重寫: 子類出現了與父類相同方法名稱、參數列表和返回類型的方法,這個咱們就稱做爲方法的重寫。權限
2.方法重寫的前提: 必需要存在繼承的關係。引用
3.什麼是時候要使用方法的重寫:父類的功能沒法知足子類的需求時。方法
方法重寫要注意的事項:異常
1.方法重寫時, 方法名與形參列表必須一致。
2.方法重寫時,子類的權限修飾符必需要大於或者等於父類的權限修飾符。
3.方法重寫時,子類的返回值類型必需要小於或者 等於父類的返回值類型。
4.方法重寫時, 子類拋出的異常類型要小於或者等於父類拋出的異常類型。 Exception(最壞) static
當方法重寫時須要父類中原有的方法,可以使用super關鍵字,該關鍵字引用當前類的父類。
重寫(Overriding)和重載(Overloading)是Java多態性的不一樣表現。
通常重寫針對子類繼承父類,重寫父類的方法,經過動態綁定;而重載是同一方法名,參數列表不一樣,重載能夠理解爲一個類中的多態。
在java中重載是由靜態類型肯定的,在類加載時就能夠取肯定,屬於靜態分派;而重寫是由動態類型肯定的,是在運行時肯定的,屬於動態分派。動態分派是由虛方法實現的,虛方法表中存在着各個方法的實際入口地址,若父類中的某個子方法沒有被重寫,則父類與子類的方法表中的方法地址相同;若重寫了,則子方法表的地址指向重寫後的地址。
重寫與重載之間的區別
方法重載:
一、同一個類中
二、方法名相同,參數列表不一樣(參數順序、個數、類型)
三、方法返回值、訪問修飾符任意
四、與方法的參數名無關
方法重寫: 一、有繼承關係的子類中 二、方法名相同,參數列表相同(參數順序、個數、類型),方法返回值相同 三、訪問修飾符,訪問範圍須要大於等於父類的訪問範圍 四、與方法的參數名無關