糅和,也译作混合插入,也许就称作 Mix-in 比较合适。
现实生活中,一个乒乓球不仅是球类物体,也是有弹性的物体。 C++ 支持多重继承,多重继承有时会导致继承关系的混乱,Java只提供了单继承,通过接口可以得到多重继承的优点,又没有多重继承的缺点。Ruby 也是单继承,不是通过接口,而是通过Mix-in 模块,来实现多重继承的优点。
模块的第三个作用:实现了类似多重继承的功能。
我们有一个Student类,有着Person类的属性和方法,还会做数学题——求平方根。已经有了Me模块,只要Mix-in 在Student类里就可以了。
看程序 E7.3-1.rb :
ruby 代码
-
-
- module Me
- def sqrt(num, rx=1, e=1e-10)
- num*=1.0
- (num - rx*rx).abs
- end
- end
-
- class Person
- def talk
- puts "I'm talking."
- end
- end
-
- class Student < Person
- include Me
- end
-
- aStudent=Student.new
- aStudent.talk
- puts aStudent.sqrt(20.7,3.3)
通过“ < 父类名 ” ,一个子类可以得到父类的属性和方法;通过“ include模块名 ” ,一个子类可以得到某个模块的常量和方法。类不能被 include 。
与include 方法相对应的,还有一个 extend 方法。如果并不是Student类的每个对象都会求平方根,只有某一个学生会,如何办到呢?
看程序 E7.3-2.rb :
ruby 代码
-
-
- module Me
- def sqrt(num, rx=1, e=1e-10)
- num*=1.0
- (num - rx*rx).abs
- end
- end
-
- class Student
- end
-
- aStudent=Student.new
- aStudent.extend(Me)
- puts aStudent.sqrt(93.1, 25)
include 方法为一个类的所有对象包含某个模块; extend 方法为一个类的某个对象包含某个模块。
完整阅读,请看我写的 Ruby语言中文教程all in one
分享到:
相关推荐
php调试工具xdebug 2.8.0-7.3-vc15-x86_
mediapipe-0.8.7.3-cp37-cp37m-macosx-10-15-x86-64.whl.zip
资源是Redhat7.3镜像文件的云盘链接,包括rhel-server-7.3-x86_64-boot.iso和rhel-server-7.3-x86_64-dvd.iso 仅供学习交流,严禁用于商业用途,请于24小时内删除
OpenSSH for windowsxp和Windows2003下载 The Cygwin team has updated the cygwin package and deprecated support for various Windows versions over time. The below table shows the Windows version with the ...
epd_free-7.3-2-win-x86.msi epd_free-7.3-2-win-x86.msi epd_free-7.3-2-win-x86.msi
在部署Mycat-server-1.6.7.3-release-20190809210613-linux.tar.gz时,首先需要解压该压缩包,得到Mycat的执行文件和配置文件。然后,根据具体的业务需求配置分片策略、数据库连接信息等,启动Mycat Server。在生产...
mediapipe-0.8.7.3-cp37-cp37m-win-amd64.whl.zip
资源来自pypi官网。 资源全名:mediapipe-0.8.7.3-cp37-cp37m-macosx_10_15_x86_64.whl
redhat7.3 iso文件,资源在百度网盘中,文件中是百度网盘分享链接和提取码
Reflector7.3插件可用版-已破解 Reflector7.3插件可用版-已破解 Reflector7.3插件可用版-已破解 DLL反射工具
总的来说,Abhi_pdf-7.3-py3-none-any.whl.zip是一个方便Python开发者和用户快速安装和使用的软件包,它遵循了Python的Wheel标准,简化了Python包的分发和安装流程。通过这个压缩包,用户可以避免编译源码,提高了...
标题"Amino.py-1.2.7.3-py3-none-any.whl.zip"和描述中的"Amino.py-1.2.7.3-py3-none-any.whl.zip"指向了一个Python软件包,名为"Amino.py",版本号为1.2.7.3,适用于Python 3解释器。这个软件包遵循PEP 425的命名...
【标题】"Mycat-server-1.6.7.3-release-20190927161129-win.tar.gz" 提供的是Mycat数据库中间件的一个特定版本,适用于Windows系统。这个文件是一个经过压缩的归档文件,其扩展名是`.tar.gz`,意味着它首先被打包成...
mycat是一个开源的分布式数据库系统,是一个实现了MySQL协议的服务器,前端用户可以把它看作是一个数据库代理,用MySQL客户端工具和命令行访问,而其后端可以用MySQL原生协议与多个MySQL服务器通信,也可以用JDBC...
Abhi_pdf-7.3-py3-none-any.whl
标题中的"php_redis-4.2.0-7.3-ts-vc15-x64.zip"揭示了这个压缩包是PHP的一个扩展模块,专门用于处理Redis数据存储系统。这里的"php_redis"是扩展的名称,表明它是PHP与Redis交互的接口。版本号"4.2.0"表示这是该...
AsyncLine-1.5.7.3-py3-none-any.whl.zip
我是用wampServer2.2的环境的,环境本身自带了对应的xdebug,只需要修改php.ini的配置就可以了。但是php.ini文件要找对,我一开始就是找错了文件,所以配了好久都不生效。 wampServer使用的php配置文件一般都放在... ...
php_xdebug-2.9.8-7.3-vc15-nts-x86_64.dll