多态发生的两个前提:
1、继承:多态一定是发生在子类和父类之间
2、重写:子类重写了父类的方法
定义一个Animal类,定义Dog类,定义Cat类,
实现方法 bark() 狗类:汪汪叫 猫类:喵喵叫
"""
定义一个Animal类,定义Dog类,定义Cat类,
实现方法 bark() 狗类:汪汪叫 猫类:喵喵叫
"""
class Animal(object):
def __init__(self,name):
self.name = name
def bark(self):
pass # 动物都会叫,但是叫声不同,所以这里不写代码,由子类去实现
class Dog(Animal):
def bark(self):
print(f'{self.name} 是一只可爱的小狗,汪汪叫....')
class Cat(Animal):
def bark(self):
print(f'{self.name} 是一只可爱的小猫咪,喵喵叫....')
# 定义一个普通的函数,传递一个对象参数,通过对象调用方法bark
def animal_sound(animal):
animal.bark()
dog = Dog('旺财')
cat = Cat('花猫')
animal_sound(dog) # 多态,通过传递不同的对象,由不同对象去调用同一方法实现不同的输出内容(因为子类重写了父类的方法)
animal_sound(cat)
# 多态的两个条件:继承,重写。
运行结果