三大特性:多态

多态

类的继承有两层意义:1.改变 2.扩展

多态就是类的这两层意义的一个具体的实现机制 即,调用不同的类实例化得对象下的相同的方法,实现的过程不一样

多态的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。
多态表明了动态(又名,运行时)绑定的存在,允计重载及运行时类型确定和验证
具体表现形式:多个子类同时继承基类,并同时可执行基类的方法,并返回不同的结果

举例:
水是一个类
不同温度,水被实例化成了不同的状态:冰,水蒸气,雾(然而很多人就理解到这一步就任务此乃多态,错,fuck!,多态是运行时绑定的存在)
(多态体现在由同一个类实例化出的多个对象,这些对象执行相同的方法时,执行的过程和结果是不一样的)
冰,水蒸气,雾,有一个共同的方法就是变成云,但是冰.变云(),与水蒸气.变云()是截然不同的两个过程,虽然调用的方法都一样
class H2O:
    def __init__(self,name,temperature):
        self.name=name
        self.temperature=temperature
    def turn_ice(self):
        if self.temperature < 0:
            print('[%s]温度太低结冰了' %self.name)
        elif self.temperature > 0 and self.temperature < 100:
            print('[%s]液化成水' %self.name)
        elif self.temperature > 100:
            print('[%s]温度太高变成了水蒸气' %self.name)

class Water(H2O):   #同时都继承了H2O的类
    pass
class Ice(H2O):     #同时都继承了H2O的类
    pass
class Steam(H2O):   #同时都继承了H2O的类
    pass


w1=Water('',25)    #实例化的对象
w1.turn_ice()       #对象去调用方法
i1=Ice('',-20)
i1.turn_ice()
s1=Steam('蒸汽',3000)
s1.turn_ice()


def func(obj):      #实现统一的调用方法(接口)
    obj.turn_ice()
func(w1)    #传入实例参数,执行同意的方法
func(i1)
func(s1)

 

 
posted @ 2016-12-25 15:16  总要做些什么  阅读(346)  评论(0编辑  收藏  举报