模塊是特殊的抽象類
模塊的由來:
模塊主要解決類的多重繼承出現(xiàn)的3個突出問題制市,
1.結(jié)構(gòu)復(fù)雜
2.優(yōu)先順序模糊
3.功能沖突
所以ruby采用Mix-in模塊來解決多重繼承問題挂谍,Mix-in技術(shù)按照以下規(guī)則來限制多重繼承:
1. 通常的繼承用單一繼承蒂破,即類只能有一個超類
2. 第二個以及兩個以上的父類必須是Mix-in的抽象類,即若要想繼承更多方法音诫,只能通過模塊來實現(xiàn)
Mix-in類(即module)是具有以下特征的抽象類
1. 不能單獨生成實例攻泼,即沒有new方法
2. 不能繼承普通類,即沒有superclass方法
主要區(qū)別:
1. 類是Class類的實例诡延,模塊是Module類的實例
2. Class類定義了三個實例方法滞欠,即new,allocate肆良,superclass
3. Class類繼承于Module類筛璧,所有類和模塊都能繼承Module類的實例方法
應(yīng)用場所:
1.類主要用于單一繼承和實例化
2.模塊主要用來包含方法
通過合理的使用,來獲得清晰的代碼惹恃,讓代碼的意圖更加明顯