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()

    二、多态性

  • 相关阅读:
    Objective
    ios 贝塞尔画图
    M端的飞行宝石代码(启发性代码)
    T端单机定时间随机召唤生物的脚本
    T端升级宝石
    Xcode中如何屏蔽某个源文件的编译警告信息
    xcode合并模拟器和真机静态库的编译
    layoutSubviews setNeedsDisplay
    限制只能输入数字字母
    正确使用Block避免Cycle Retain和Crash
  • 原文地址:https://www.cnblogs.com/lichunke/p/9531241.html
Copyright © 2011-2022 走看看