Ruby中没有Java语言中的interface,Ruby只支持单继承。Ruby通过Mix-in提供对类的扩展,其灵活性要比Java中的接口强大很多。
Ruby中通过Module实现Minx-in。
Module,带来的两个好处:
1. 提供命名空间,组织类名冲突。
2.实现了min-in能力
Module的几点说明:
1.Module是方法和类常量的集合
2.Module中的方法包括实例方法和Module方法
3.Module不能实例化
4.Module中的实例方法要么作为类实例方法(include),要么作为类的类方法(extend)
5.Module方法可以直接被module使用
例子
module M
def m1
puts 'instance methods'
end
#第一种方式定义module方法
def M.m2
puts 'module method'
end
#第二种方式定义module方法
def self.m3
puts 'module method m3'
end
#第三种方式定义module方法
class << self
def m4
puts 'module method m4'
end
end
end
M.m2 #=>'module method'
M::m2 #=>'module method'
M.m3 #=> 'module method m3'
M::m3 #=>'module method m3'
M.m4 #=>'module method m4'
M::m4 #=>'module method m4'
#module中的实例方法作为类的实例方法
class C1
include M
end
C1.new.m1 #=> 'instance methods'
#module中的实例方法作为类的类方法
class C2
extend M
end
C2.m1 #=> 'instance methods'
参考链接
http://ruby-doc.org/core-2.3.0/Module.html
http://www.tutorialspoint.com/ruby/ruby_modules.htm
网友评论