模块是特殊的抽象类
模块的由来:
模块主要解决类的多重继承出现的3个突出问题,
1.结构复杂
2.优先顺序模糊
3.功能冲突
所以ruby采用Mix-in模块来解决多重继承问题,Mix-in技术按照以下规则来限制多重继承:
1. 通常的继承用单一继承,即类只能有一个超类
2. 第二个以及两个以上的父类必须是Mix-in的抽象类,即若要想继承更多方法,只能通过模块来实现
Mix-in类(即module)是具有以下特征的抽象类
1. 不能单独生成实例,即没有new方法
2. 不能继承普通类,即没有superclass方法
主要区别:
1. 类是Class类的实例,模块是Module类的实例
2. Class类定义了三个实例方法,即new,allocate,superclass
3. Class类继承于Module类,所有类和模块都能继承Module类的实例方法
应用场所:
1.类主要用于单一继承和实例化
2.模块主要用来包含方法
通过合理的使用,来获得清晰的代码,让代码的意图更加明显
网友评论