接口类和抽象类

接口类和抽象类

一、接口简述
接口:把所有成员组合起来,用来封装一定功能的集合

二、使用接口的意义
意义:归一化
只要是基于同一个接口实现的类,那么所有的这些类产生的对象在使用时,从用法上来说都一样。

三、归一化
归一化:凡是基于同一个接口实现的类,所有的这些类产生的对象在使用的时候,从用法上来说都一样

归一化的好处:
1、无需关心对象的类是什么,只知道这些对象具备哪些功能即可
2、归一化使得高层的外部使用者可以不加区分的处理所有接口兼容的对象集合

四、抽象类
python中没有接口的概念,没有interface关键字,可以使用抽象类完成接口的功能

抽象类:一个特殊的类,只能被继承,不能实例化
注:如果说类是一堆对象中抽取相同的内容而来,那么抽象类就是一堆类中抽取相同的内容而来的

抽象类与普通类的不同之处在于:抽象类中只能有抽象方法(没有实现功能),该类不能被实例化,只能被继承,且子类必须实现抽象方法。这一点与接口有点类似,但其实是不同的

四、python实现抽象类
abc模块:
Python有一个模块:ABC,Abstract Base Class(抽象基类),主要定义了基本类和最基本的抽象方法,可以为子类定义共有的API,不需要具体实现。相当于是Java中的接口或者是抽象类。

ABC的使用案例:

from abc import ABCMeta,abstractmethod

class Payment(metaclass=ABCMeta):#定义一个基类,使用装饰器使得子类必须有和基类里面相同的方法
    """
    强制规定一个规范,凡是继承我的类中的必须有pay方法,如果没有,实例化对象的时候就会报错
    """
    @abstractmethod#
    def pay(self):
        pass

class Alipay(Payment):
    def __init__(self,money):
        self.money = money

    def pay(self):
        print("使用支付宝支付了%s元" % self.money)

class Jdpay(Payment):
    def __init__(self,money):
        self.money = money

    def pay(self):
        print("使用京东支付了%s元" % self.money)
class Wechatpay(Payment):
    def __init__(self,money):
        self.money = money

    def pay(self):
        print("使用微信支付了%s元" % self.money)

a1 = Alipay(200)
j1 = Jdpay(100)
w1 =Wechatpay(20)

def pay(obj):#定义一个支付接口函数,参数为类的对象
    obj.pay()
pay(a1)#统一化接口设置
pay(j1)
pay(w1)


#结果”
"""
使用支付宝支付了200元
使用京东支付了100元
使用微信支付了20元
"""
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值