编写一个具有多态特性的“父类”与多个“子类”模型,并在应用中,采用 不同的参数传递,体现多态性。【可以参考动物有猫、狗、老虎等不同子类】
时间: 2024-10-16 16:05:52 浏览: 25
深入理解c#t语言的特性
在Python中,我们可以使用抽象基类(Abstract Base Class, ABC)或者接口(Interface)来实现多态。这里以动物为主题,创建一个“动物”父类和一些具体的子类(如猫、狗和老虎):
```python
from abc import ABC, abstractmethod
# 创建一个抽象的动物基类
class Animal(ABC):
@abstractmethod
def make_sound(self):
pass
# 具体的子类 - 猫
class Cat(Animal):
def make_sound(self):
return '喵喵'
# 具体的子类 - 狗
class Dog(Animal):
def make_sound(self):
return '旺旺'
# 具体的子类 - 老虎
class Tiger(Animal):
def make_sound(self):
return '吼吼'
# 应用场景 - 动物园的示例
def animal_sounds(animal_type, sound_argument=None):
if isinstance(animal_type, Animal): # 判断传入的对象是否属于Animal类型
if sound_argument is None: # 如果没有额外的声音参数,则调用默认的make_sound方法
print(animal_type.make_sound())
else:
# 传递额外参数改变声音效果,体现了多态性
print(f"{animal_type.make_sound()} {sound_argument}")
# 实例化并测试
cat = Cat()
dog = Dog()
tiger = Tiger()
# 使用多态性传递不同的参数
animal_sounds(cat) # 输出:喵喵
animal_sounds(dog, '摇尾巴') # 输出:旺旺 摇尾巴
animal_sounds(tiger, '咆哮') # 输出:吼吼 咆哮
阅读全文