您好,登錄后才能下訂單哦!
這篇文章主要介紹了java中重載和重寫的區別有哪些,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
重載指在一個類中,具有多個相同名稱的方法,他們的參數列表卻不相同
(參數類型不同、參數個數不同甚至是參數順序不同)
重載對返回類型沒有要求,可以相同也可以不同,但是不能返回類型來判斷他們是否是重載。
例如
package HelloWorld; public class Zuoye { public static void main(String[] args) { Zuoye z = new Zuoye(); z.fangfa1(); z.fangfa1("張旭"); } public void fangfa1() { System.out.println("方法1"); } public void fangfa1(String name) { System.out.println("也是方法1,不過有參數"+ name); } }
1.重載是一個類中多態性的一種表現
2.重載是在一個類中,具有相同名稱不同參數列表的方法
3.重載不能根據返回類型的相同或者不同來區分重載函數。
1.重寫是指在不同類中,將父類的方法在子類中重新寫一遍,子類繼承了父類原有的方法,但有時又不想繼承父類原有一模一樣的方法,所以就在返回類型,方法名,參數列表相同的情況下,對方法體進行修改進行重寫,這就是重寫。但注意的是 子類的訪問修飾符不能比父類的更嚴格(意思就是父類的訪問修飾符要更加 嚴謹,權限更少,父親嚴格)
例如
package HelloWorld; public class Father { public static void main(String[] args) { Son s = new Son(); s.fangfa(); } public void fangfa() { System.out.println("我是爸爸的方法"); } } class Son extends Father { public void fangfa() { System.out.println("我是兒子的方法"); } }
返回結果是
1. 發生在父類和子類關系之間
2. 他們的返回類型,方法名,列表參數相同 方法體不同。
3.子類不能比父類更嚴格 ,(父親比兒子嚴格)。
4重寫方法一定不能拋出新的檢查異常或者比被重寫方法申明更加寬泛的檢查型異常
private 最嚴格。
private
: 在同一類內可見。使用對象:變量、方法。 注意:不能修飾類(外部類)
default
(即缺省,什么也不寫,不使用任何關鍵字): 在同一包內可見,不使用任何修飾符。使用對象:類、接口、變量、方法。
protected
: 對同一包內的類和所有子類可見。使用對象:變量、方法。 注意:不能修飾類(外部類)。
public
: 對所有類可見。使用對象:類、接口、變量、方法
總結重載和重寫的區別:
答:方法的重載和重寫都是實現多態的方式 ,區別在于重載實現的是編譯時的多態性,重寫實現的運行時的多態性。
重載是在發生在同一個類中,他們有相同的方法名 ,但有不同的參數列表,重載對返回類型沒有特別要求,不能根據返回類型來進行區分 。
而重寫發生在不同類中,發生在子類和父類之間的,重寫要求子類與父類的被重寫方法具有相同的返回類型,名稱和參數列表。 但他們的方法體要不同。 同時,父類相較于子類,他的訪問修飾符會更加嚴格,即訪問范圍更小。比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常(里氏代換原則) 。
感謝你能夠認真閱讀完這篇文章,希望小編分享的“java中重載和重寫的區別有哪些”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。