ruby的module与Java的interface以及C++的friend
Module是Ruby一个非常好用的功能,它跟Class类别非常相似,你可以在里面定义方法。只是你不能用new来建立它。它的第一个用途是可以当做Namespace来放一些工具方法:
- module MyUtil
- def self.foobar
- puts "foobar"
- end
- end
- MyUtil.foobar # 输出 foobar
另一个更重要的功能是Mixins,可以将一个Module混入类別之中,这样这个类別就会拥有此Module的方法。这回让我们拆成两个wenji,debug.rb和foobar.rb,然後在foobar.rb中用来
引用debug.rb:
首先是debug.rb:
- module Debug
- def who_am_i?
- puts "#{self.class.name}: #{self.inspect}"
- end
- end
然后是foobar.rb:
- require "./debug"
- class Foo
- include Debug # 這個動作叫做 Mixin
- end
- class Bar
- include Debug
- end
- a = Foo.new
- b = Bar.new
- a.who_am_i? # 輸出 Foo: #<Foo:0x00000102829170>
- b.who_am_i? # 輸出 Bar: #<Bar:0x00000102825b88>
Ruby使用Module来解決多重继承的问题,不同类别之间只要拥有相同的方法,就可以改放在Module里面,然后include
它即可。
Java中的interface可以解决多重继承的缺陷,C++是支持多重继承的,而且有一个元友的概念。我认为ruby的include module更像C++的friend class的功能。
转载于:https://blog.51cto.com/sanqianyuejia/1131218
ruby的module与Java的interface以及C++的friend相关推荐
- Java注释@interface的用法
2019独角兽企业重金招聘Python工程师标准>>> java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类. @O ...
- Java接口interface
Java接口interface 1.多个无关的类可以实现同一个接口. 2.一个类可以实现多个无关的接口. 3.与继承关系类似,接口与实现类之间存在多态性. 接口(interface)是抽象方法和常量值 ...
- Java Native Interface 六JNI中的异常
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 在这里只讨论调用JNI方法可能会出现的异常, ...
- 【转】JNI(Java Native Interface)的简介
因为刚刚接触android和java平台,对JNI到底是什么,还不是很了解,所以从CSDN转载了一篇文章,以便自己对JNI有一个认识,也跟大家分享一下. JNI是Java Native Interfa ...
- Java Native Interface 二 JNI中对Java基本类型和引用类型的处理
本文是<The Java Native Interface Programmer's Guide and Specification>读书笔记 Java编程里会使用到两种类型:基本类型(如 ...
- Java注释@interface的用法【转】
Java用 @interface Annotation{ } 定义一个注解 @Annotation,一个注解是一个类. @Override,@Deprecated,@SuppressWarnings ...
- java 抽象接口类,Java接口(interface)和Java抽象类(abstract class)的区别(详诉版)
1.概述 一个软件设计的好坏,我想很大程度上取决于它的整体架构,而这个整体架构其实就是你对整个宏观商业业务的抽象框架, 当代表业务逻辑的高层抽象层结构合理时,你底层的具体实现需要考虑的就仅仅是一些算法 ...
- Android JNI(Java Native Interface)技术介绍
Android平台上的JNI技术介绍 JUL 15TH, 2013 | COMMENTS NDK简介 Android是由Google领导开发的操作系统,Android依靠其开放性,迅速普及,成为目前最 ...
- Ruby,Python和Java中的Web服务
今天,我不得不准备一些示例来说明Web服务是可互操作的. 因此,我已经使用Metro使用Java创建了一个简单的Web服务,并在Tomcat上启动了它. 然后尝试使用Python和Ruby消耗它们. ...
最新文章
- Java集合详解之Map
- BZOJ1042 [HAOI2008]硬币购物
- 多通道图像的通道分享和合成函数-split、merge
- html制作花样链接卡页面_使用HTML5实现刮刮卡效果
- 百度视频携手神策数据,引领基于 AI 的短视频推荐技术新潮流
- 【windows8开发】C++开发WinRT组件和JS调用
- hdu2115: I Love This Game
- 1123. Is It a Complete AVL Tree (30)
- 使用ODAC调用ORACLE的自定义函数和存储过程
- mysql 实现计数器_MySQL实现计数器的表设计及实现
- C#性能优化篇 - 基于索引器封装EPList
- 文件系统与linux相关知识点
- hive优化--增加减少map数
- 60版FireFox无法在win7虚拟机上安装
- MySQL保存历史执行语句
- 2022大众点评商家数据
- 线性代数之 矩阵乘法的本质
- python 删除文件夹中相似图片
- linux 默认网关自动消失,route add default gw 添加默认网关,重起后消失
- 类似于talkingdata的灵动功能的实现