Nic Lin's Blog

喜歡在地上滾的工程師

請講解「繼承」這個觀念

Ruby為了避免多重繼承帶來程式碼過於複雜以及容易混淆的缺點,所以採用單一繼承(Single inheritance)。

不過單一繼承同樣有其缺點,用動物比擬物件程式碼為例,一個馬的程式物件加上了線條樣式成為斑馬物件,馬是父類別,斑馬繼承了馬類別,所以斑馬是馬的子類別,而線條樣式是另外撰寫的程式碼,若又要用同樣做法將貓加上線條使其成為老虎,貓是父類別,老虎繼承了貓類別,所以老虎是貓的子類別,而線條樣式仍然是要另外撰寫的程式碼。

由於斑馬與老虎僅單一繼承一個父類別,因此必須重複撰寫程式碼,例如線條樣式的程式碼就重複兩次,而一旦需求改變,欲同時修改斑馬物件與老虎物件的線條樣式時,就有兩份線條樣式的程式碼需要修改,諸如此類的例子都會造成程式碼維護上的困擾,因此松本行弘才在Ruby中增加了模組(Module),為Ruby提供多重繼承的功能,當線條是模組時,在撰寫斑馬以及老虎時,可以引入線條模組,往後只要維護線條模組唯一的程式碼來源就可以了。

comments powered by Disqus