直接上代码
Rectangle.rb
class
Rectangle
attr_accessor :width
attr_accessor :height
def
initialize(wdth, hgt)
@width
=
wdth
@height
=
hgt
end
def
area()
return
@width
*
@height
end
def
+
(addRectangle)
return
area()
+
addRectangle.area()
end
end
Square.rb
require
"
Rectangle
"
#
or require "Rectangle.rb"
class
Square
<
Rectangle
def
initialize(size)
@width
=
size
@height
=
size
end
end
s
=
Square.new(
2
)
puts s.area
#
output 4
我们可以看到Square继承了Rectangle类,并且拥有新的initalize方法。
这样 可以记住两个东西 一个是继承的符号是<,另一个是require方法可以包含另外的ruby源文件。
在ruby中,可以把方法的定义放在class外面,比如
def
fell?()
puts
"
I fell fine.
"
end
fell?()
这种写法好像是全局函数,其实并不是全局函数,而是给基类Object增加了一个fell?方法,因为任何类都从Object继承而来,所以这个时候任何类都将支持这个fell?方法。
本文通过实例演示了Ruby中类的继承方式,包括定义Rectangle类并由Square类继承,展示了如何覆盖初始化方法以及如何使用require引入其他Ruby源文件。
674

被折叠的 条评论
为什么被折叠?



