首先看下他们的关系

  1. irb(main):100:0> String.class
  2. => Class
  3. irb(main):101:0> String.class.superclass 
  4. => Module
  5. irb(main):102:0> String.class.superclass.superclass 
  6. => Object

class < Module < Object

1、类 只能单继承,但是可以包含多个模块

module AA
  def AA.prints1(str)
    print "A:"+str
  end
end

module BB
  def BB.prints2(str)
    print "B:"+str
  end
end

class CC
  include AA
  AA.prints1("aa")
  include BB
  BB.prints2("bb")
end

2、模块 就和c#接口类似,包含一些公共接口方法,无法实例化

类调用模块的两种方式

A.rb 在方法前加 模块名.方法名 (AA.prints1) , 在其引用类中就可以直接调用 AA.prints1

module AA
  def AA.prints1(str)
    print "A:"+str
  end
end

B.rb 如果没有加模块名则需要在其引用类中添加 include BB把方法包含进引用类中,相当于继承了方法,然后就可以直接调用了prints2

module BB
  def prints2(str)
    print "B:"+str
  end
end

最新文章

  1. 第9章 Shell基础(4)_Bash的运算符及环境变量配置文件
  2. 【腾讯Bugly干货分享】微信读书iOS性能优化
  3. linux 搭建SVN服务器,为多个项目分别建立版本库并单独配置权限
  4. 在GitHub上建立个人主页的方法(转载)
  5. sprint2(第七天)
  6. English article1
  7. 005windows与Linux文件共享
  8. c# 组元(Tuple)
  9. 19、XHTML
  10. qq昵称由fly改为思诺
  11. PHP 安装使用 gearman
  12. ionic2新手入门整理,搭建环境,创建demo,打包apk,热更新,优化启动慢等避坑详解
  13. FineUIPro控件库深度解析
  14. SpringBoot 配置定时任务
  15. CodeForces632E 神奇的多重背包
  16. NodeJS 学习记录
  17. Centos6.8-hadoop-2.7.2 64 bit源码编译(伪分布-5大守护进程在本机上)
  18. Maven profile 打包分环境加载不同的资源文件
  19. How to Create a Framework for iOS[RE]
  20. weblogic升级之ddconverter

热门文章

  1. 验证码javaweb
  2. C++快速入门系列教程
  3. 线程,yield让出cpu调度
  4. Java面向对象㈡ -- 继承与多态
  5. 解决java文件编码和windows7系统(中文版)默认编码冲突所导致的乱码情况
  6. 【转】去掉Sqlite3 数据库中的前后回车换行符(newline)
  7. 数据库使用--MyISAM InnoDB 区别
  8. 【JAVA】【Eclipse】出现This element neither has attached source nor attached Javadoc...的解决方法
  9. JS面向对象的程序设计
  10. cursor 鼠标样式——属性