zoukankan      html  css  js  c++  java
  • 面向对象 多态

    多态:由不同的类实例化得到的对象,调用同一个方法,执行的逻辑不同    即不同的数据有相同的方法或者属性

    多态的概念指出了对象如何通过他们共同的属性和动作来操作及访问,而不需要考虑他们具体的类    例如:

     1 a = '1234'
     2 b = [1,2,3,4]
     3 c = (1,2,3,4)
     4 print(len(a))
     5 print(len(b))
     6 print(len(c))
     7 输出:、
     8 4
     9 4
    10 4

    str()  叫工厂函数

     1 class H2o:
     2     def __init__(self, name, temperature):
     3         self.name = name
     4         self.temperature = temperature
     5 
     6     def temp(self):
     7         if self.temperature <= 0:
     8             print('[%s] 温度太低结成冰' % self.name)
     9         elif self.temperature >= 100:
    10             print('[%s] 温度太高汽化成水蒸气' % self.name)
    11         else:
    12             print('[%s] 温度适中成为水' % self.name)
    13 
    14 
    15 class Water(H2o):
    16     pass
    17 
    18 
    19 class Ice(H2o):
    20     pass
    21 
    22 
    23 class Stream(H2o):
    24     pass
    25 
    26 
    27 def fun(x):
    28     x.temp()
    29 
    30 
    31 w1 = Water('', 50)
    32 s1 = Stream('水蒸气', 120)
    33 i1 = Ice('', -5)
    34 # s1.temp()
    35 # w1.temp()
    36 # i1.temp()
    37 fun(w1)
    38 fun(s1)
    39 fun(i1)
    40 输出:
    41 [水] 温度适中成为水
    42 [水蒸气] 温度太高汽化成水蒸气
    43 [冰] 温度太低结成冰

    不同的类经过实例后,可以调用相同的方法。     可以多态的条件  有一个共同的基类

    不同的类继承了相同的方法这就是多态,   多态就是继承的一种体现方式

    多态实质上是继承的实现细节;那么让多态与封装、继承这两个概率并列,显然是不符合逻辑的。

  • 相关阅读:
    Qt安装
    Windows下查看进程的工具
    編譯 Boost 1.35.0 (Visual Studio 2005 (VC 8.0) + Windows XP
    boost1.35.0编译日志
    Linux
    Tool
    word cup
    IIS Study
    Oracle PL/SQL语言基础1 [初级] (http://www.cnmpa.com/edu/a1/8/892f4a44496ef382.asp)
    Psychology
  • 原文地址:https://www.cnblogs.com/ch2020/p/12433274.html
Copyright © 2011-2022 走看看