直接上代码
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
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
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?()
puts "I fell fine."
end
fell?()
这种写法好像是全局函数,其实并不是全局函数,而是给基类Object增加了一个fell?方法,因为任何类都从Object继承而来,所以这个时候任何类都将支持这个fell?方法。