重寫(overwrite)、重載(overload)和覆蓋(override)三者之間的區別

        關於這三者之間,有很多書都說方法的重載就是方法的重寫,也有很多書將兩者加以區分,當然,也有很多書將覆蓋和重載合併。正所謂人言可謂,我現在都開始懷疑我以前認爲的兩者說是不是正確的,當然,我不是認爲兩者說屬於謬論。可是別人的三說論也有道理。我思索了半天也弄不清楚該信誰的。算了,不就一個概念嗎,先記下。

        兩者說:有重載(覆蓋)和重寫一說。(出自哪裏忘了,是從筆記中找到的……)其中:

        重載:就是子類從父類中繼承的同名方法,子類可以在這方法中重新定義自己的方法的實現。是子類對父類方法的再載入。

        重寫:就是一個類中的方法同名,但是形參的類型和個數不一樣,這叫做重寫。

        兩者說:有重寫(覆蓋)和重載一說。出自《Java語言程序設計》其中:

        重寫:就是子類中有方法名和父類中的方法名稱相同,但是實現不一樣,這叫做重寫。

        重載:一個類中,具有多個方法,這些方法的名稱相同,但是方法簽名不一樣(也就是形參的類型和個數及返回值不一樣),這就叫方法的重載。

        三者說:有重載、重寫和覆蓋。出自《Java高手真經之Java核心編程技術》其中:

        覆蓋:子類繼承了父類的同名無參函數。當子類從父類繼承了一個無參函數,而又定義了一個同樣的無參函數,則子類定義的方法覆蓋父類的方法,稱爲覆蓋。

        重載:子類繼承了父類的同名有參函數。當子類繼承了父類的一個同名方法,且方法參數不同,稱爲重載。通過方法的重載,子類可以重新實現父類的某些方法,使其具有自己的特徵。

        重寫:當前類的同名方法。通過方法的重寫,一個類可以有多個具有相同名字的方法,由傳遞給它們不同的個數和類型的參數來決定使用哪種方法。因此,重寫的名稱是當前類中的同名函數,不是父類中的函數名。

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