zoukankan      html  css  js  c++  java
  • 多态

    '''
    什么是多态:由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同
    多态:多态的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需考虑他们具体的类。多态表明了动态(又名,运行时)绑定的存在,允许重载及运行时类型确定和验证
    举例:水是一个类,不同温度,水被实例化成了不同的状态-->冰,水蒸气,雾(然而很多人就理解到这一步认为此乃多态,错,多态是运行时绑定的存在)
    多态体现在由同一个类实例化出的多个对象,这些对象执行相同的方法时,执行的过程和结果是不一样的。
    冰,水蒸气,雾,有一个共同的方法就是变成云,但是冰.变云()与水蒸气.变云()是截然不同的两个过程,虽然调用的方法都一样
    '''
    
    s = 'ssss'
    l = [1, 2, 3]
    print(len(s))
    print(len(l))
    print(s.__len__()) # 用点访问,相当于是调用对象的方法
    print(l.__len__()) # 用点访问,相当于是调用对象的方法,这两个不同对象在调用同一个方法(一个是字符串一个是列表)
    
    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)
          else:
             print('[%s]温度太高气化成了水蒸气' % self.name)
    
    class Water(H2O):
       pass
    
    class Ice(H2O):
       pass
    
    class Steam(H2O):
       pass
    
    w1 = Water('', -20) # 实例化一个对象
    i1 = Ice('', 30) # 实例化一个对象
    s1 = Steam('', 1000) # # 实例化一个对象
    
    w1.turn_ice()
    i1.turn_ice()
    s1.turn_ice() # 这三个不同对象调用同一个方法,执行的过程和结果是不一样的;相当于s.__len__()
    
    def func(obj):
       obj.turn_ice()
    
    func(w1)
    func(i1)
    func(s1) # 相当于len(s)
    
    '''
    类的继承有两层意义:1.改变 2.扩展
    多态就是类的这两层意义的一个具体的实现机制
    即,调用不同的类实例化的对象下的相同的方法,实现的过程不一样
    python中的标准类型就是多态概念的一个很好的示范
    '''
    while True: print('studying...')
  • 相关阅读:
    将Oracle数据库设置为归档模式 & Oracle 9i启动归档
    修改用户家目录
    使用Pam_Tally2锁定和解锁SSH失败的登录尝试
    linux系统用户锁定与解锁
    Linux用户密码过期 FAILED to authorize user with PAM (Authentication token is no longer valid; new one req)
    普通用户通过sudo su
    两台服务器配置互信
    red hat官方的rhel操作系统版本号与内核版本号的对应关系
    linux修改IP地址
    Docker学习(12) Dockerfile构建过程
  • 原文地址:https://www.cnblogs.com/xuewei95/p/14686253.html
Copyright © 2011-2022 走看看