Re: [概念] 使用抽象類別到底有何好處 ?

作者: WanCW (旺小王)   2013-07-29 20:23:42
※ 引述《Tripadvisor (探險家)》之銘言:
: 假設我有好幾個子類別實作了抽象類別中的某個函數,在子
: 類別中各個類別都有自己的實作方式,如此就我看來抽象
: 類別只是提供了一個共同的 "方法名稱" 的優點,然而抽象名稱
: 就只有這點兒好處嗎 ? 讓我覺得可有可無都沒差,反正各個
: 子類別都有自己的作法,就算我不繼承這個抽象類別,我在每個
: 子類別自己設定相同的函數名稱不就好了 ?
這取決你使用的程式語言特性。
像 Python、Ruby 之類的語言,根本沒有 interface 或是 abstract method,
而是實際執行時才判斷該物件有沒有實作被呼叫的 method。所以你甚至不需要
繼承特定類別。
但是像 C++、Java 等語言,則是在編譯時期依靠 object type 來判斷
是否有實作被呼叫的 method。當你有很多個類似的 class 要提供相同作用的
method ,定義 abstract base-class 或宣告 interface 是最簡單的作法。
不然就得針對每個具體的類別寫一段叫用的程式,或者是用 reflection 等
麻煩的方法。
《Design Pattens》成書的年代動態語言還不流行,自然有些東西在現在看來
會不太適用。

Links booklink

Contact Us: admin [ a t ] ucptt.com