iT邦幫忙

2021 iThome 鐵人賽

DAY 16
0
自我挑戰組

菜雞的JAVA日記系列 第 16

DAY16-JAVA的繼承(3)

改寫
改寫(overriding)的觀念和多載相似,他們都是JAVA的多型(polymorphism)的技術之一。polymorphism的原意是「多樣性」,而多型的特色即是函數在不同的情況下可扮演不同的角色。

class Test{  //父類別
    ...
    public void area(){  //父類別裡的area()函數
        ...
    }
}
class lala extends Test{  //子類別 
    ...
    public void area(){  //子類別裡的area()函數
        ...
    }
}    
public static void main(String args[]){
    lala.area();
}

從上面的程式可以看到,父類別和子類別都有一個不需要引數且名稱相同的area()函數,但是當lala這個物件呼叫時,到底是哪一個area()會被呼叫呢?

子類別裡所定義的area()取代父類別的area()功能,這種情形於OOP的技術裡稱之為「改寫」。也就是說透過「改寫」的技術,於子類別中可定義和父類別裡的名稱、引數個數與資料型態完全相同的函數,用以取代父類別中原有的函數。

多載與改寫的比較
-多載:是在相同類別內,定義名稱相同,但引數個數或型態不同的函數,如此一來,JAVA便可依據引數的個數或形態,呼叫相對應的函數。

-改寫:是在子類別中,定義名稱、引數個數與傳回值的型態均與父類別相同的函數,用以改寫父類別裡的函數功用。

final修飾子
(1)變數或是類別裡的資料成員經過final宣告之後,就像常數般無法在被更改其值,他的值只能在final宣告時設定一次。
(2)函數經過final宣告之後,不能被改寫。
(3)類別經過final宣告之後,不能被繼承。

菜鳥工程師的體脂肪

菜鳥工程師也有分享食記,歡迎大家追蹤喔~~
https://instagram.com/engineer_bodyfat?utm_medium=copy_link

中秋假期開始啦~~
See U tomorrow:))


上一篇
DAY15-JAVA的繼承(2)
下一篇
DAY17-JAVA的繼承(4)
系列文
菜雞的JAVA日記30

尚未有邦友留言

立即登入留言