从0基础学习Python (Day17)
面向对象三大特征[多态]
多态
概念
不同子类的对象调用相同的父类方法,产生不同的结果
特点
调用方法的技巧
1.多态可以增加代码的灵活度。
2.以继承和重写为前提
3.是调用方法的技巧,不会影响类的原本设计
多态和多态性
多态
多态指的是同一种事物的多种状态:水这种事物有多种不同的状态:冰,水蒸气
多态性
多态性是指在不考虑实例类型的情况下使用实例
在面向对象方法中一般是这样表述多态性:
向不同的对象发送同一条消息(obj.func():是调用了obj的方法func,又称为向obj发送了一条消息func),不同的对象在接收时会产生不同的行为(即方法)。
也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。
··比如:老师.下课铃响了(),学生.下课铃响了(),老师执行的是下班操作,学生执行的是放学操作,虽然二者消息一样,但是执行的效果不同
多态性的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。
·· 冰,水蒸气,都继承于水,它们都有一个同名的方法就是变成云,但是冰.变云(),与水蒸气.变云()是截然不同的过程,虽然调用的方法都一样
#父类,工作
class Worke(object):
def __init__(self, name):
self.name = name
def work(self):
print("工作")
#子类重写父类中的工作[多态的体现]
class Web(Worke):
def work(self):
print("我是前端工程师")
#子类重写父类中的工作[多态的体现]
class Server(Worke):
def work(self):
print("我是服务器工程师")
#通过对相同的父类采用不同方法的调用,以达到不同的调用效果
class Cto(Worke):
def work(self, worke):
print("我安排%s去" % worke.name)
worke.work()
zs = Web("张三")
zs.work()
ls = Server("里斯")
ls.work()
lb = Cto("小明")
lb.work(ls)
Day17-------END