主要指的是兩個相同類別的東西會融合,
並不會覆蓋掉。像之前的例子:
class Card
def rent_court(sport)
puts "租#{sport}"
end
end
class Card
def use
puts "使用泳池"
end
end
如果我們分別想成兩個類別的東西,
他們即會融合在一起,像之前一樣指定變數後,
就都可以使用rent_court方法以及use方法。
之前提過物件導向程式設計語言的特性的封裝性:
以下表達這三種方法的使用:
class Card
def rent_court(sport)
puts "租#{sport}"
end
protected
def use
puts "使用泳池"
end
private
def rock_climbing
puts "使用攀岩"
end
end
rent_court 方法是public,
use方法是protected,rock_climbing方法是private。
除了上面方式,也可以寫成:
class Card
def rent_court(sport)
puts "租#{sport}"
end
def use
puts "使用泳池"
end
def rock_climbing
puts "使用攀岩"
end
protected :use
private :rock_climbing
end
當藉由指定變數以及使用方法時:
arance = Card.new
arance.rent_court "羽球場"
會回傳租羽球場。
arance.use
arance.rock_climbing
使用protected和private的方法,
都會回傳NoMethodError,
在這其實無法明確的指出 receiver是誰。
其實只要藉由send就可以得到想要的結果:
arance.send(:use)
arance.send(:rock_climbing)
就會得到使用泳池、使用攀岩的結果。