zoukankan      html  css  js  c++  java
  • 面向对象三大特性之多态与多态性

    一、多态

    '''
    多态:
        同一事物的多种形态
    '''
    
    
    # 文件的多种形态:
    
    class File:
        def click(self):
            pass
    
    
    class TextFile(File):
        def read(self):
            print('文本文件双击可以查看内容')
    
    
    class ExeFile(File):
        def exe(self):
            print('可执行文件双击可以执行')
    
    
    file1 = TextFile()
    file2 = ExeFile()
    
    file1.read()
    file2.exe()
    
    # 上面的代码,其实子类压根没用到父类的功能,多态应用如下
    
    import abc
    
    
    class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
        @abc.abstractclassmethod
        def click(self):
            pass
    
    
    class TextFile(File):
        def read(self):
            print('文本文件双击可以查看内容')
    
    
    class ExeFile(File):
        def exe(self):
            print('可执行文件双击可以执行')
    
    
    file1 = TextFile()
    file2 = ExeFile()
    
    '''
    使用abc模块,指定metaclass=ab.ABCMeta,如果子类没有用到父类的功能则会报错
        TypeError: Can't instantiate abstract class TextFile with abstract methods click
    '''
    
    # 修改如下:
    import abc
    
    
    class File(metaclass=abc.ABCMeta):  # 同一类事物:文件
        @abc.abstractclassmethod
        def click(self):
            pass
    
    
    class TextFile(File):
        def click(self):
            print('文本文件双击可以查看内容')
    
    
    class ExeFile(File):
        def click(self):
            print('可执行文件双击可以执行')
    
    
    file1 = TextFile()
    file2 = ExeFile()
    file1.click()
    file2.click()

    二、多态性

  • 相关阅读:
    i春秋xss平台
    i春秋exec
    bugku 你必须让他停下
    bugku 域名解析
    bugku web3
    bugku 矛盾
    (转)ubuntu下怎么放wifi热点给andriod设备
    (转)如何在 ubuntu 下使用 iNode 客户端
    博客更新啦!!
    HDU 5351 MZL's Border (多校联合第5场1009)
  • 原文地址:https://www.cnblogs.com/lichunke/p/9531241.html
Copyright © 2011-2022 走看看