美文网首页
ruby类与模块的区别

ruby类与模块的区别

作者: wayoona | 来源:发表于2017-12-04 23:28 被阅读0次

    模块是特殊的抽象类

    模块的由来:

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

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

    相关文章

      网友评论

          本文标题:ruby类与模块的区别

          本文链接:https://www.haomeiwen.com/subject/gdwfixtx.html