以之前的例子而言,
對於每個國民運動中心可以用一個國民動中心的類別繼承,
但大家今天會好奇,有些國民運動中心有冰宮,
但有些沒有,如果藉由繼承,這樣會使得每個運動中心都可以使用冰宮,
例如:
class Card
def rent_court(sport)
puts "租#{sport}"
end
def use
puts "使用泳池"
end
def frozone_place
puts "使用冰宮"
end
end
class Xinzhuang < Card
end
class Sanchong < Card
end
class Banqiao < Card
end
class Tucheng < Card
end
但其實,可能只有土城運動中心才能使用冰宮,
所以這邊藉由繼承的形式,
對於其他運動中心的情況就不太適當,
所以這時候我們就會使用模組這個功能。
我們會藉由Module來定義,Module 後面接模組名稱,
其類別名稱要以常數來命名,所以第一個英文字母要大寫。
再透過include模組進入類別裡面,
這樣類別就可以使用模組所定義好的方法。
上面的例子而言:
class Card
def rent_court(sport)
puts "租#{sport}"
end
def use
puts "使用泳池"
end
end
module Frozone
def frozone_place
puts "使用冰宮"
end
end
class Xinzhuang < Card
end
class Sanchong < Card
end
class Banqiao < Card
end
class Tucheng < Card
include Frozone
end
所以當使用include模組後:
arance = Tucheng.new
arance.frozone_place
即可以得到,使用冰宮。
同時間土城運動中心也繼承所有運動中心,
可以使用游泳池。
所以藉由 arance.use也可以得到使用泳池。
模組與類別的差異性,模組沒有繼承的功能,
所以也不能實體化。
所以不能藉由模組做繼承:
module Frozone < Fire
end
所以也不能藉由模組做實體化:
module Frozone
end
arance = Frozone.new