您好,登錄后才能下訂單哦!
Overload和Override 的區別是什么,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
Overload是重載的意思,Override是覆蓋的意思,也就是重寫。
Overload(重載):
重載 Overload 表示同一個類中可以有多個名稱相同的方法,但這些方法的參數列表各不相
同(即參數個數或類型不同)。
Override(重寫):
重寫 Override 表示子類中的方法可以與父類中的某個方法的名稱和參數完全相同,通過子類創建的實例對象調用這個方法時,將調用子類中的定義方法,這相當于把父類中定義的那個完全相同的方法給覆蓋了,這也是面向對象編程的多態性的一種表現。子類覆蓋父類的方法時,只能比父類拋出更少的異常,或者是拋出父類拋出的異常的子異常,因為子類可以解決父類的一些問題,不能比父類有更多的問題。子類方法的訪問權限只能比父類的更大,不能更小。如果父類的方法是private 類型,那么,子類則不存在覆蓋的限制,相當于子類中增加了一個全新的方法。
Java里方法重寫override與方法重載overload有什么區別?
1.相同點
方法重寫override與方法重載overload都是實現多態的方式。
2.不同點
1)方法重載要求方法名必須相同,但參數列表必須不同,即方法的參數類型不同、參數個數不同、參數順序不同,或三者都不同,與反回值類型無關。
2)方法重寫則要求子類被重寫方法與父類被重寫方法有相同的返回值類型,比父類被重寫方法更好訪問,不能比父類被重寫方法聲明更多的異常處理。
3)方法重載是編譯時的多態性,而實方法重寫是運行時的多態性。
4)方法重載發生在一個類中,而方法重寫發生在子類與父類之間。
override 可以翻譯為覆蓋,從字面就可以知道,它是覆蓋了一個方法并且對其重寫,以求達到不同的作用。對我們來說最熟悉的覆蓋就是對接口方法的實現,在接口中一般只是對方法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。除了這個典型的用法以外我們在繼承中也可能會在子類覆蓋父類中的方法。在覆蓋要注意以下的幾點:
1.覆蓋的方法的標志必須要和被覆蓋的方法的標志完全匹配,才能達到覆蓋的效果;
2.覆蓋的方法的返回值必須和被覆蓋的方法的返回一致;
3.覆蓋的方法所拋出的異常必須和被覆蓋方法的所拋出的異常一致,或者是其子類;
4.被覆蓋的方法不能為 private,否則在其子類中只是新定義了一個方法,并沒有對其進行
覆蓋。
overload 對我們來說可能比較熟悉,可以翻譯為重載,它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然后再調用時,VM 就會根據不同的參數樣式,來選擇合適的方法執行。在使用重載要注意以下的幾點:
1.在使用重載時只能通過不同的參數樣式。例如,不同的參數類型,不同的參數個數,不同的參數順序(當然,同一方法內的幾個參數類型必須不一樣,例如可以fun(int,float),但是不能為 fun(int,int))。
2.不能通過訪問權限、返回類型、拋出的異常進行重載;
3.方法的異常類型和數目不會對重載造成影響;
4.對于繼承來說,如果某一方法在父類中是訪問權限是priavte,那么就不能在子類對其進行重載,如果定義的話,也只是定義了一個新方法,而不會達到重載的效果。
方法的重寫和重載是Java多態性的不同表現。重寫是父類與子類之間多態性的一種表現,而重載是一個類中多態性的一種表現。
關于Overload和Override 的區別是什么問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。