抽象(Abstract)
抽象(Abstract)在物件導向中可以說是非常重要的一個觀念,他的意思簡單的講,那就是大家都必定會做這件事,但是內容會不同。
舉例來說,公司裡每個人每天從家裡來公司的方式都不同,同樣是交通這件事,美美騎車來上班,阿花坐捷運來上班,阿財開賓士來上班,阿土伯騎腳踏車來上班,阿里走路來上班,交通這件事是每個人都必定會做的事,但是每個人的交通方式都不會相同,這就是抽象。
要使用抽象方法,就必去把類別宣告為抽象類別,抽象類別中可以有抽象方法,也可以有一般方法,而一般類別只能有一般方法,不能有抽象方法。抽象方法只有方法體,裡面沒有內容,沒有內容為什麼還要宣告呢?抽象方法宣告以後,是給他的子類別使用,子類別一定要實作抽象方法,如果沒有實作的話程式就會錯誤不能執行。
使用抽象就表示大家都有共同要做的事情,才會使用抽象,例如我宣告一個抽象類別是員工,每個員工當然都要工作,也必定都會領薪水,所以工作和薪水就是員工這個抽象類別裡面的抽象方法,每個員工的工作內容當然都不會相同,薪水也會每個人不一樣,這就是抽象的概念。簡單的說,抽象就是對要描述的東西,找到共同必要的元素。
由於使用抽象類別的目的是裡面的方法要被繼承然後覆寫,所以抽象類別是不能實例化的,既然一定會被下面的子類別覆寫,那也就沒有需要做實例化的動作了,如果要使用抽象方法,應該是實例化繼承了抽象類別的子類別,然後再去使用這個子類別的抽象方法。就好像上面的例子中,員工是抽象類別,如果要我想要知道薪水,使用這個薪水抽象方法,一家公司裡面每個人的薪水都不一樣,想要知道薪水就應該是要去呼叫繼承了員工這個類別下面子類別的員工A、員工B、員工C…,然後才能夠得到員工A、員工B、員工C每個人的薪水分別是多少。
抽象(Abstract)雖然通常大家都是翻譯為抽象,但是其實Abstract這個詞比較像是歸納的意思,就好像讀論文時,論文的最前面都會有Abstract,這裡Abstract的意思就是摘要和歸納。如果我宣告一個抽象類別是車子,抽象方法就會有油耗、承載量等等,可以說我歸納了一台車子會有油耗、承載量這些特性,但如果說我抽象了一台車會有油耗、承載量這些特性感覺就很奇怪,這是關於名詞上的翻譯使用歸納感覺比較好理解,但是通常大家都還是把Abstract翻譯為抽象。
這一篇僅僅說明抽象的觀念,沒有搭配程式大家可能會不好理解,之後我會再寫一篇抽象的程式教學,大家就會比較好理解,好好的運用抽象可以讓程式好維護,是非常重要的一個觀念。
留言列表