4.请使用示例程序通过继承来显示多态性
时间: 2024-02-24 11:00:07 浏览: 18
好的,以下是一个简单的示例程序,通过继承来展示多态性的实现:
```python
# 定义一个父类 Animal
class Animal:
def __init__(self, name):
self.name = name
def speak(self):
raise NotImplementedError("Subclass must implement abstract method")
# 定义两个子类 Dog 和 Cat
class Dog(Animal):
def speak(self):
return self.name + " says woof!"
class Cat(Animal):
def speak(self):
return self.name + " says meow!"
# 创建一个函数,接收 Animal 类的实例作为参数
def animal_speak(animal):
print(animal.speak())
# 创建 Dog 和 Cat 的实例
fido = Dog("Fido")
fluffy = Cat("Fluffy")
# 调用 animal_speak 函数,传入 Dog 和 Cat 的实例作为参数
animal_speak(fido)
animal_speak(fluffy)
```
在上面的代码中,我们定义了一个父类 Animal,它有一个方法 speak,但是在父类中我们没有实现这个方法,而是抛出了一个 NotImplementedError 异常,因为我们希望子类必须实现这个方法。
接下来,我们定义了两个子类 Dog 和 Cat,它们都继承了父类 Animal,同时实现了 speak 方法,分别返回不同的字符串。
最后,我们定义了一个函数 animal_speak,接收 Animal 类的实例作为参数,调用它的 speak 方法并打印输出。
我们创建了 Dog 和 Cat 的实例,分别传入 animal_speak 函数作为参数,由于 Dog 和 Cat 的 speak 方法已经重写了父类的 speak 方法,所以当我们调用 animal_speak 函数时,输出了不同的字符串。这就是多态性的体现。