接口类 抽象类

接口类 抽象类
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()

 

posted @ 2018-01-19 15:50  裙下的小香蕉  阅读(138)  评论(0编辑  收藏  举报