一、多态的引入
1、先看一个问题
2、使用传统的方法类解决
class Food:
name=None
def __init__(self,name):
self.name=name
class Fish(Food):
pass
class Bone(Food):
pass
class Animal:
name=None
def __init__(self,name):
self.name=name
class Cat(Animal):
pass
class Dog(Animal):
pass
class Master:
name=None
def __init__(self,name):
self.name=name
# 给猫猫喂鱼
def feed_cat(self,cat:Cat,fish:Fish):
print(f"主人:{self.name} 给动物:{cat.name} 喂的食物是:{fish.name}")
# 给小狗喂骨头
def feed_dog(self,dog:Dog,bone:Bone):
print(f"主人:{self.name} 给动物:{dog.name} 喂的食物是:{bone.name}")
# 测试
master=Master("小明")
cat=Cat("小花猫")
fish=Fish("黄花鱼")
dog=Dog("大黄狗")
bone=Bone("大棒骨")
master.feed_cat(cat,fish)
master.feed_dog(dog,bone)
问题分析:如果动物/食物的种类很多,怎么办?
传统的方法带来的问题是什么?如何解决?
1)问题是:代码的复用性不高,而且不利于代码维护和功能扩展
2)解决方案:引出->多态