1.ruby同JAVA一样只支持单继承,每个类只能有一个父类
class Point
def initialize(x, y)
end
end
class Point3D < Point
# 子类可以重写父类的方法
def initialize(x,y,z)
super(x,y)
end
end
2. 为了提高程序的灵活性ruby引入了 模块 为实现多重继承提供了可能。模块可以说是类的一个补充,但是模块于类有两个不同:
- 模块不能拥有实例
- 模块不能被继承 --- ## 如何创建模块 ### 关键字:module
- 模块名必须是大写字母开头
module HelloModule
# 定义常量
Version = 'v1.0'
# 定义方法
def say_hello(name)
puts "hello,#{name}"
end
# 指定say_hello 方法为模块函数
module_function :say_hello
end
注释: module_function: 的作用是把方法作为模块函数公开给外部使用,module_function后面跟的参数是方法名。
3. 解决ruby单继承
module Mod
def meth
puts "这是module"
end
end
# 使用关键字 include 使类包含模块 代码:
class ModuleDemo01
include Mod
end
mod = ModuleDemo01.new
mod.meth
注释:
- 同继承关系一样,类自身已经定义了同名方法时,优先使用类自身的方法
- 一个类中包含多个模块,优先使用最后一个包含的模块
网友评论