• 抽象类和接口类代码注释部分


    接口类

    # java : 面向对象编程
    # 设计模式 —— 接口
    # 接口类 : python原生不支持
    # 抽象类 : python原生支持的
    from abc import abstractmethod,ABCMeta
    class Payment(metaclass=ABCMeta): # 元类 默认的元类 type
    @abstractmethod
    def pay(self,money):pass # 没有实现这个方法
    # 规范 :接口类或者抽象类都可以
    # 接口类 支持多继承,接口类中的所有的方法都必须不能实现 —— java
    # 抽象类 不支持多继承,抽象类中方法可以有一些代码的实现 —— java
    class Wechat(Payment):
    def pay(self,money):
    print('已经用微信支付了%s元'%money)

    class Alipay(Payment):
    def pay(self,money):
    print('已经用支付宝支付了%s元' % money)

    class Applepay(Payment):
    def pay(self,money):
    print('已经用applepay支付了%s元' % money)

    def pay(pay_obj,money): # 统一支付入口
    pay_obj.pay(money)

    # wechat = Wechat()
    # ali = Alipay()
    app = Applepay()
    # wechat.pay(100)
    # ali.pay(200)
    p = Payment()

    #接口类的多继承
    # tiger 走路 游泳
    # swan 走路 游泳 飞
    # oldying 走路 飞
    from abc import abstractmethod,ABCMeta
    class Swim_Animal(metaclass=ABCMeta):
    @abstractmethod
    def swim(self):pass

    class Walk_Animal(metaclass=ABCMeta):
    @abstractmethod
    def walk(self):pass

    class Fly_Animal(metaclass=ABCMeta):
    @abstractmethod
    def fly(self):pass

    class Tiger(Walk_Animal,Swim_Animal):
    def walk(self):
    pass
    def swim(self):
    pass
    class OldYing(Fly_Animal,Walk_Animal):pass
    class Swan(Swim_Animal,Walk_Animal,Fly_Animal):pass

    # 接口类 刚好满足接口隔离原则 面向对象开发的思想 规范


    #抽象类
    #一切皆文件
    import abc #利用abc模块实现抽象类

    class All_file(metaclass=abc.ABCMeta):
    all_type='file'
    @abc.abstractmethod #定义抽象方法,无需实现功能
    def read(self):
    '子类必须定义读功能'
    with open('filaname') as f:
    pass

    @abc.abstractmethod #定义抽象方法,无需实现功能
    def write(self):
    '子类必须定义写功能'
    pass

    class Txt(All_file): #子类继承抽象类,但是必须定义read和write方法
    def read(self):
    print('文本数据的读取方法')
    def write(self):
    print('文本数据的读取方法')

    class Sata(All_file): #子类继承抽象类,但是必须定义read和write方法
    def read(self):
    print('硬盘数据的读取方法')

    def write(self):
    print('硬盘数据的读取方法')

    class Process(All_file): #子类继承抽象类,但是必须定义read和write方法
    def read(self):
    print('进程数据的读取方法')

    def write(self):
    print('进程数据的读取方法')

    wenbenwenjian=Txt()

    yingpanwenjian=Sata()

    jinchengwenjian=Process()

    #这样大家都是被归一化了,也就是一切皆文件的思想
    wenbenwenjian.read()
    yingpanwenjian.write()
    jinchengwenjian.read()

    print(wenbenwenjian.all_type)
    print(yingpanwenjian.all_type)
    print(jinchengwenjian.all_type)


    # 抽象类 : 规范
    # 一般情况下 单继承 能实现的功能都是一样的,所以在父类中可以有一些简单的基础实现
    # 多继承的情况 由于功能比较复杂,所以不容易抽象出相同的功能的具体实现写在父类中


    # 抽象类还是接口类 : 面向对象的开发规范 所有的接口类和抽象类都不能实例化
    # java :
    # java里的所有类的继承都是单继承,所以抽象类完美的解决了单继承需求中的规范问题
    # 但对于多继承的需求,由于java本身语法的不支持,所以创建了接口Interface这个概念来解决多继承的规范问题

    # python
    # python中没有接口类 :
    # python中自带多继承 所以我们直接用class来实现了接口类
    # python中支持抽象类 : 一般情况下 单继承 不能实例化
    # 且可以实现python代码


  • 相关阅读:
    [转贴]彻底解决 CrystalReports 登录失败问题。
    [资源]《就说》——《大学自习室》作者郝雨又一力作,继续那种搞笑的说唱
    [推荐]一个用来给控件做提示的JS脚本,鼠标移到控件上时出现提示,离开时消失!
    [原创]一个公告栏的源码(利用marquee作的)
    [转帖]DataGrid显示双层表头,即可实现合并单元格问题
    [转贴]15句让女生爱你一生的情话
    [疑问]您没有调试该服务器的权限。验证您是服务器上"Debuger Users"组的成员。
    [转帖]九个不可不占的便宜
    [转贴]秘芨(男孩子为了终身幸福,最好背下来哦)
    [转贴]也许放弃也是一种爱!++++++++觉得这篇文章写得不错
  • 原文地址:https://www.cnblogs.com/ddjl/p/8335978.html
Copyright © 2020-2023  润新知