在 Ruby 中,多態性是通過方法重寫(method overriding)實現的。方法重寫允許子類繼承父類的方法,并在子類中根據需要重寫這些方法。這使得子類可以以不同的方式實現相同的方法,從而實現多態性。
以下是一個簡單的示例,展示了如何在 Ruby 中實現方法重載:
class Animal
def speak
puts "The animal makes a sound"
end
end
class Dog < Animal
# 方法重寫:在子類中重寫父類的 speak 方法
def speak
puts "The dog barks"
end
end
class Cat < Animal
# 方法重寫:在子類中重寫父類的 speak 方法
def speak
puts "The cat meows"
end
end
animals = [Dog.new, Cat.new]
animals.each do |animal|
animal.speak
end
在這個示例中,我們定義了一個名為 Animal
的基類,其中包含一個名為 speak
的方法。然后,我們創建了兩個子類:Dog
和 Cat
,它們分別繼承自 Animal
類。在子類中,我們重寫了 speak
方法,以提供不同的行為。
當我們遍歷 animals
數組并調用每個動物的 speak
方法時,Ruby 會根據對象的實際類型(Dog
或 Cat
)動態地選擇要調用的方法。這就是 Ruby 中的多態性。