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

    1、什么是多态:多态指的是同一种/类事物的不同形态(父类对象的多种(子类对象)状态)
    2、为什么要使用多态?

    #   多态性:在多套的背景下,可以不用考虑对象的具体类型的前提下直接使用对象
    #   多态性的精髓:统一

    3、如何使用多态

      1 imort abc
      2 class People(metaclass=abc.ABCMeta):
      3     def __init__(self, name):
      4         self.name = name
      5 
      6     @abc.abstractmethod
      7     def speak(self): pass
      8 
      9 class Chinese(People):
     10     def speak(self):
     11         print('说中国话')
     12 
     13 class England(People):
     14     def speak(self):
     15         print('说英国话')
     16 
     17 
     18 if __name__ == '__main__':
     19     # 多态的体现:功能或是需求,需要父类的对象,可以传入父类对象或任意子类对象均可以
     20     #       注:一般都是规定需要父类对象,传入子类对象
     21     def ask_someone(obj):
     22         print('让%s上台演讲' % obj.name)  # 父类提供,自己直接继承
     23         obj.speak()  # 父类提供,只不过子类重写了
     24 
     25     ch = Chinese('王大锤')
     26     en = England('Tom')
     27 
     28     ask_someone(ch)
     29     ask_someone(en)
     30 
     31 

    鸭子类型
    1、规定有什么属性及什么方法的类的类型叫鸭子类型
    2、能提供出规定的属性与方法的对象就是鸭子

      1 class Disk:
      2     def read(self):
      3         print('Disk read')
      4 
      5     def write(self):
      6         print('Disk write')
      7 
      8 
      9 class Memory:
     10     def read(self):
     11         print('Mem read')
     12 
     13     def write(self):
     14         print('Mem write')
     15 
     16 
     17 class Cpu:
     18     def read(self):
     19         print('Cpu read')
     20 
     21     def write(self):
     22         print('Cpu write')
     23 
     24 
     25 obj1=Disk()
     26 obj2=Memory()
     27 obj3=Cpu()
     28 
     29 obj1.read()
     30 obj2.read()
     31 obj3.read()
  • 相关阅读:
    01 网络基础
    01 ansible的基本介绍
    10 面向对象的编程
    03 docker容器镜像基础
    09 异常处理
    08 输入输出
    07 数据结构
    02 docker的基本用法
    01 docker容器技术基础入门
    06 字符串
  • 原文地址:https://www.cnblogs.com/king-home/p/10778618.html
Copyright © 2011-2022 走看看