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