抽象類別只是告知開發者,必須去實作那個類別,亦即:要去「繼承」抽象類別,並且實作子類別出來。
抽像類別唯一目的,就是:讓整個繼承結構更完整。讓"物件導向"更合理化。
舉個例子:
生物(界、門、綱、目、科、屬、種)
動物界、植物界
人類(動物界、脊索動物門、 哺乳綱、靈長目、人科)
abstract class 生物 { abstract void 基因染色體 () ; } // 這個「生物」類別,被宣告為抽象的,無法直接 new,一定要繼承並實作才能使用。 // 它預先宣告了一個「抽象方法」:基因染色體。 // 抽象類別可以整個空白,也可以預先定義一些成員屬性、方法。 class 動物 extends 生物 { } // 「動物」類別,繼承「生物」抽象類別 // 雖然這個「動物」類別沒有宣告 abstract 抽象,但因為沒有實作「抽象方法」,所以會自動成為「抽象類別」,亦即無法直接 new。 // 凡是子類別繼承「抽象類別」,沒有實作它裡面的「抽象方法」,就會自動成為抽象類別。 class 人類 extends 動物 { void 基因染色體 (numOfDna) { System.out.println ( "染色體有" + numOfDna + "對"); } } // 「人類」類別 繼承「動物」類別,並且實作了「抽象方法」,這個類別是可以 new 的。 |
也許你會覺得奇怪,沒事搞這麼複雜幹嘛?
直接一個「人類」類別不就得了,幹嘛上層還用什麼「生物」「動物」抽象類別?吃飽撐著?
這樣講也是沒錯,所以抽象類別一般很少使用....
但有些人比較龜毛,非得要整個 OO 結構合理完整化。這有助於邏輯思路。
不過其實這才是真正意義上的 OO,因此 JAVA 提供了抽象類別。
另一種用途是:大團隊合作,起先企劃的人,想到一些點子,但是如何實作,企劃的人不管,他只是先行企劃一個大概方向,實作的細節交給其他合作的夥伴去解決。所以企劃就先宣告一些抽象類別,合作的夥伴再去實作細節。分工合作這樣子。
出處:http://www.mobile01.com/topicdetail.php?f=512&t=2971459
沒有留言:
張貼留言