前言
今天说一哈,面向对象中的 “多态”,(等等,多,多态?多姿多态?)
一、概念:
- 一类事物有多种形态,是一种使用对象的方式;
- 子类重写父类的方法,调用不同的子类对象的相同父类的方法,可以产生不同的效果。
二、定义:
1.步骤:
- 定义父类,并提供公共方法
- 定义子类,并重写父类方法
- 传递子类对象给调用者,可以看到不同子类执行效果不同
2. 例:
以下实例,已经客观的说明了多态的特性,至于作用还得靠大家琢磨奥~
class Teacher():
def work(self):
pass
class FE_Teacher(Teacher):
def work(self):
print('大家跟我学前端')
class Java_Teacher(Teacher):
def work(self):
print('大家跟我学java')
class School():
def give_lessons(self,teacher): # 此时的参数teacher接受的是某个子类的对象
teacher.work()
# 调用work()方法,其实这句代码构成了:对象.方法名称 的样式,也就是普普通通的创建对象,然后再这个对象中调用方法
fe=FE_Teacher()
java=Java_Teacher() # 创建两个老师对象
school=School() # 创建 最重要的这个学校对象
school.give_lessons(java) # 执行结果为:大家跟我学java
# 上面这行代码其实就是: 在学校对象的 “give_lessons” 方法中,把你选择的老师对象 当做参数传递进来,从而执行老师的方法
school.give_lessons(fe) #执行结果为:大家跟我学前端
注: 代码我已经备注的很详细了,嘴笨,还望大家谅解~
总结
多态其实得目光远一点才能更好的体会它的作用,扩展性我认为很nice
最后:大家有什么问题,和好的建议可以留在评论区奥~