java中overload與override的區別

1、綜述
  重寫(Override)也稱覆蓋,它是父類與子類之間多態性的一種表現,而重載(Overload)是一個類中多態性的一種表現。 override從字面就可以知道,它是覆蓋了一個方法並且對其重寫,以求達到不同的作用。overload它是指我們可以定義一些名稱相同的方法,通過定義不同的輸入參數來區分這些方法,然後再調用時,VM就會根據不同的參數樣式,來選擇合適的方法執行。

2、override(重寫,覆蓋)
(1)方法名、參數、返回值相同。
(2)子類方法不能縮小父類方法的訪問權限。
(3)子類方法不能拋出比父類方法更多的異常(但子類方法可以不拋出異常)。
(4)存在於父類和子類之間。
(5)方法被定義爲final不能被重寫。
(6)被覆蓋的方法不能爲private,否則在其子類中只是新定義了一個方法,並沒有對其進行覆蓋。

3、overload(重載,過載)
(1)參數類型、個數、順序至少有一個不相同。
(2)不能重載只有返回值不同的方法名。
(3)針對於一個類而言。
(4)不能通過訪問權限、返回類型、拋出的異常進行重載;
(5)方法的異常類型和數目不會對重載造成影響;

4、override應用:
(1)最熟悉的覆蓋就是對接口方法的實現,在接口中一般只是對方法進行了聲明,而我們在實現時,就需要實現接口聲明的所有方法。
(2)除了這個典型的用法以外,我們在繼承中也可能會在子類覆蓋父類中的方法。

5、總結
  override是在不同類之間的行爲,overload是在同一個類中的行爲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章