在 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 中的多态性。