Python 接口_实现类_继承_多态 小例子

# 定义接口类
from abc import ABC, abstractmethod


class Animal(ABC):
    @abstractmethod
    def speak(self):
        pass


# 定义实现类
class Dog(Animal):
    def speak(self):
        return "Woof!"


class Cat(Animal):
    def speak(self):
        return "Meow!"


class Cow(Animal):
    def speak(self):
        return "Moo!"


# 创建对象
dog = Dog()
cat = Cat()
cow = Cow()

# 调用不同对象的speak方法,实现多态
print(dog.speak())  # 输出: Woof!
print(cat.speak())  # 输出: Meow!
print(cow.speak())  # 输出: Moo!


# 通用处理类来实现多态
class AnimalOperator:
    def __init__(self, operand):
        self.operand = operand

    def perform_operation(self):
        if isinstance(self.operand, Animal):  # 判断变量operand是否是Animal类的实例对象。
            self.operand.speak()  # 调用operand对象的speak方法。


dog_operator = AnimalOperator(dog)  # 创建一个狗的操作器对象,传入狗实例作为参数
cat_operator = AnimalOperator(cat)  # 创建一个猫的操作器对象,传入猫实例作为参数
cow_operator = AnimalOperator(cow)  # 创建一个牛的操作器对象,传入牛实例作为参数


dog_operator.perform_operation()  # 输出: Woof!
cat_operator.perform_operation()  # 输出: Meow!
cow_operator.perform_operation()  # 输出: Moo!



"""
当我们定义了一个抽象类Animal,它有一个抽象方法speak()。抽象类不能被实例化,只能被继承。因此,我们定义了三个具体的实现类Dog、Cat和Cow,它们都继承自Animal类,并且都实现了speak()方法。  接下来,我们创建了Dog、Cat和Cow的实例对象dog、cat和cow。然后,我们通过调用不同对象的speak()方法,实现了多态性,即不同对象对同一个方法speak()有不同的实现。  最后,我们使用print()函数打印不同对象的speak()方法的返回值,即dog.speak()返回"Woof!",cat.speak()返回"Meow!",cow.speak()返回"Moo!"。
"""

 

posted @ 2023-11-28 15:44  zwnsyw  阅读(21)  评论(0编辑  收藏  举报