zoukankan      html  css  js  c++  java
  • 接口类 抽象类

    接口类 抽象类
    python中没有接口类,有抽象类,abc模块中的metaclass = ABCMeta,@abstructmethod
    本质是做代码规范用的,希望在子类中实现和父类方法名字完全一样的方法
    在java的角度上看 是有区别的
    java本来就支持单继承 所以就有了抽象类
    java没有多继承 所以为了接口隔离原则,设计了接口这个概念,支持多继承了
    python及支持单继承也支持多继承,所以对于接口类和抽象类的区别就不那么明显了
    甚至在python中没有内置接口类


    # 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()
  • 相关阅读:
    个人总结
    第十六周学习进度条
    第二阶段冲刺第十天
    第二阶段冲刺第九天
    分层体系架构模式
    安卓语音识别
    AndroidStudio中导入jar包的方法
    Android中控件之间添加分割线
    按照分层设计理念,完成《XXX需求征集系统》的概念结构设计
    在Eclipse下搭建Hibernate框架(加载hibernate工具插件,离线)
  • 原文地址:https://www.cnblogs.com/qunxiadexiaoxiangjiao/p/8317341.html
Copyright © 2011-2022 走看看