ruby类与模块的区别

2017-12-04  本文已影响0人  wayoona

模块是特殊的抽象类

模块的由来:

模块主要解决类的多重继承出现的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.模块主要用来包含方法

通过合理的使用,来获得清晰的代码,让代码的意图更加明显

上一篇下一篇

猜你喜欢

热点阅读