前面幾篇了解類別與模組的差異之後,
我們來看看
到底甚麼時候要使用類別繼承,
什麼時候使用模組呢?
因為類別多了繼承的能力,
如果彼此間是有關連的,
甚至是要有另一類別內的所有能力,
可以考慮使用類別繼承。
例如我們產生一個動物類別會動、能吃東西,
然後我們要產生一樣會動、能吃東西的魚類別、鳥類別、狗類別,
我們就可以讓這三個類別都繼承動物類別,
這樣這三個類別所有實體都會動、能吃東西。
如果你想產生一種叫飛魚的實體,
你需要定義一種會飛的方法並呼叫它。
問題來了,你該將飛的方法定義在誰的裡面呢?
在動物裡面...X不正確,不是所有動物都會飛
在魚類別裡面...X不正確,因為基本上魚都不會飛
在鳥類別裡...X很奇怪,雖然鳥基本上都會飛,但飛魚應該是一種魚
那該怎麼辦呢?...可以考慮使用模組。
我們可以產生一個飛行模組,
再讓魚類別包含飛行模組,
這樣飛魚就可以呼叫飛行模組裡的會飛方法了!
這樣一來,很多需要飛行的類別(鳥、飛機...)
都可以用同樣的方式呼叫囉!
可以參考這裡
Ruby
Module
Class