一、概念
-
多态 不同的 子类对象 调用相同的 父类方法,产生不同的执行结果
- 多态 可以 增加代码的灵活度
- 以 继承 和 重写父类方法 为前提
- 是调用方法的技巧,不会影响到类的内部设计
例子:
需求
- 在
Animal
类中封装方法play
- 一群动物在玩
- 定义
Dog
继承自Animal
,并且重写play
方法- 小灰狗不想跟其他动物玩
- 定义
Person
类,并且封装一个 和狗玩 的方法- 在方法内部,直接让 狗对象 调用
play
方法
- 在方法内部,直接让 狗对象 调用
class Animal(object):
def __init__(self,name):
self.name = name
def play(self):
print("一群动物在玩 %s" %(self.name))
class Dog(Animal):
def play(self):
print("%s不想跟其他动物玩" %(self.name))
class Person(object):
def __init__(self,name):
self.name = name
def game_with_dog(self,dog):
print("%s和%s在愉快的晚上" %(self.name,dog.name))
# 让狗玩
dog.play()
dog = Dog("小灰狗")
zhangsan = Person("张三")
zhangsan.game_with_dog(dog)
打印结果
图片.png
案例小结
-
Person
类中只需要让 狗对象 调用play
方法,而不关心具体是 什么狗-
play
方法是在Animal
父类中定义的
-
- 在程序执行时,传入不同的 狗对象 实参,就会产生不同的执行效果
网友评论