在Ruby中,多態性是指不同對象可以對同一方法作出不同的響應。要實現多態性,你可以使用方法覆蓋(method overriding)和模塊(modules)。這里主要介紹方法覆蓋。
方法覆蓋是指子類定義一個與父類相同名稱的方法,當子類對象調用該方法時,將執行子類中的實現,而不是父類中的實現。這樣,不同類的對象可以通過相同的接口調用不同的實現。
以下是一個簡單的示例:
class Animal
def speak
puts "The animal makes a sound"
end
end
class Dog < Animal
def speak
puts "The dog barks"
end
end
class Cat < Animal
def speak
puts "The cat meows"
end
end
animals = [Dog.new, Cat.new]
animals.each do |animal|
animal.speak
end
輸出結果:
The dog barks
The cat meows
在這個例子中,Dog
和 Cat
類都覆蓋了 Animal
類的 speak
方法。當我們遍歷 animals
數組并調用每個元素的 speak
方法時,會根據對象的實際類型執行相應的方法實現。這就是多態性的體現。