在 Ruby 中,继承是通过 class
关键字和 <
符号来实现的。子类可以使用父类的属性和方法,同时还可以添加自己的属性和方法。以下是一个继承的简单示例:
class Animal
def speak
puts "I am an animal"
end
end
class Dog < Animal
def speak
puts "I am a dog"
end
end
my_dog = Dog.new
my_dog.speak # 输出 "I am a dog"
在这个示例中,Dog
类继承了 Animal
类,并重写了 speak
方法以添加自己的行为。
多态是通过方法重写和方法重载实现的。方法重写是指子类重写父类的方法,以实现自己的行为。方法重载是指在同一个类中定义多个同名的方法,但是参数类型或数量不同,以实现不同的行为。以下是一个多态的简单示例:
class Animal
def speak
puts "I am an animal"
end
end
class Dog < Animal
def speak
puts "I am a dog"
end
end
class Cat < Animal
def speak
puts "I am a cat"
end
end
def make_speak(animal)
animal.speak
end
my_dog = Dog.new
my_cat = Cat.new
make_speak(my_dog) # 输出 "I am a dog"
make_speak(my_cat) # 输出 "I am a cat"
在这个示例中,make_speak
方法接受一个 Animal
类型的参数,并调用其 speak
方法。由于 Dog
和 Cat
都继承自 Animal
,因此它们都可以作为参数传递给 make_speak
方法。在每个子类中,speak
方法被重写以实现自己的行为。在调用 make_speak
方法时,根据传递的参数类型的不同,会调用不同的子类中的 speak
方法,从而实现了多态。