21、多态

1、示例

---------------------------------

class Animal(object):

def __init__(self, name):
self.name = name

def eat(self):
print(self.name + "吃")

------------------------------------
from animal import Animal

class Cat(Animal):
def __init__(self, name):
# self.name = name
super(Cat, self).__init__(name)

# def eat(self):
# print(self.name + "吃")


'''
不继承父类的写法

class Cat(object):
def __init__(self, name):
self.name = name

def eat(self):
print(self.name + "吃")

'''
------------------------------------

from animal import Animal

class Mouse(Animal):
def __init__(self, name):
# self.name = name
super(Mouse, self).__init__(name)

# def eat(self):
# print(self.name + "吃")

------------------------------------

class Person(object):

def feedAnimal(self, ani):
print("给你实物")
ani.eat()
'''

def feedCat(self, cat):
print("给你实物")
cat.eat()

def feedMouse(self, mouse):
print("给你食物")
mouse.eat()

'''
----------------------------------

 

 

 

 

 

 

 

from cat import Cat
from mouse import Mouse

from person import Person


'''
多态:一种事物的多种形态

最终目标:人可以喂任何一种动物


'''

tom = Cat("tom")
jerry = Mouse("jerry")

#tom.eat()
#jerry.eat()

#思考:在添加100种动物,也都有name属性和eat方法
#定义了一个在name属性和eat方法的Animal类,让所有的动物类都继承自Animal

#定义一个人类,可以喂猫和老鼠吃东西

per = Person()

#per .feedCat(tom)
#per.feedMouse(jerry)

#思科:人要喂100种动物,难道要写100个feed方法吗???
#tom和jerry都继承自动物

per.feedAnimal(tom)
posted @ 2020-02-18 20:55  步行-天下  阅读(71)  评论(0)    收藏  举报