时间:2021-05-22
模块与类很相似,它也可以说成是“不能被实例化的类”。由于Class类是Module类的子类,所以说成是“类=模块+实例化能力”也许更好。
所谓模块,究竟是用来干什么的呢?其作用主要有两大类:Mix-in和命名空间。
Mix-in实际上是受限制的多重继承。利用实际做成的继承关系,可以实现对某些类进行一些“点缀”的目的。事实上,Mix-in这种说法就来自于在冰激凌上面的饼干或者坚果。
在面向对象设计的历史中,由多重继承机制造成的问题早已众所周知了。所以,很多现代的面向对象设计语言都只支持单一继承的方式。Ruby就是采用的这种方式。
但是,多重继承机制也有不能被割舍的魅力。因此Ruby通过采用Mix-in的方式引入了很多多重继承的优点。
一个类如果同时继承了多个类,就会很容易在面向对象设计上出现很多问题。因此,Ruby加入了以下限制:
1、 只能继承一个类
2、 可以继承多个所谓的“像类但不是类”的模块
此外,Ruby把“在类中加入模块”的动作称为include。
模块的另一个功能是提供命名空间
在大规模的程序开发中,命名冲突的问题经常会出现。比如读者在程序中需要制作一个名为Service的类,但是Service这个名字却已经在程序库中被使用了,这就是命名冲突的问题。
在很多现代的编程语言中,为了避免命名冲突的问题,基本上都提供了命名空间或者包的功能。在不同的命名空间中存在的Service类虽然类名相同,但是会被作为不同的对象来处理。
在Ruby中,通常会利用模块来提供这样的命名空间。
最开始的Service类属于Top Level的命名空间,后面的Service类则属于Library模块。
这其实就是Top Level和Library模块中分别定义了名为Service的常量(类名实际上是指向class对象的常量)。
因此,在使用时就像使用常量一样。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
零基础入门ctf的方法如下: 1、首先要学习基础知识,推荐阅读CTF专业教程,了解ctf; 2、从基础题出发。在学习过程中要适当地做一些关于理论知识的习题,
上篇文章大概讲了DataList的一些基础知识,掌握这些知识在将来的应用中起到很大的作用,现在我们就开始讲上篇文章中说的基础知识做一个小例子。首先,我机子的数据
想要学好SEO优化,那么了解网站优化相关的一些基础知识是必不可少的。掌握好每一个基础知识点的是为了后期更好优化网站。网上关于搜索引擎抓取页面规则的文章多如牛毛,
Android中WebView的一些简单用法一直想写一个关于WebView控件的一些简单运用,都没什么时间,这次也是挤出时间写的,里面的一些基础知识就等有时间再
最近在写一些关于java基础的文章,但是我又不想按照教科书的方式去写知识点的文章,因为意义不大。基础知识太多了,如何将这些知识归纳总结,总结出优缺点或者是使用场