抽象类接口类

抽象类和接口类做的事情:建立规范

制定一个类的metaclass是ABCMeta那么这个类就编程了一个抽象类(接口类)这个类的功能就是建立一个规范类  让它里面的规范都有一样的方法或者属性

抽象类中所有被abstractmethod装饰的方法都必须被继承的字类实现

如果不实现 那么在实例化阶段就会报错

无论是抽象类还是接口类metaclass = ABCMeta 都不可以被实例化

from abc import ABCMeta, abstractmethod
class Payment(metaclass = ABCMeta):   #这就是建立一个规范的类
    @abstractmethod
    def pay(self, money):
        print(‘充值了%s元‘%money)

class Person(Payment):
    def pay(self,money):
        print(‘充值了%s元‘ % money)
def pay(a, money):
    print(‘充值了%s元‘%( money))

alex = Person()
# alex.pay(1000)
pay(alex,1000)

什么叫接口?

python是没有接口的概念的  那么接口是从哪儿来的概念呢?

  java类是没有多继承的  接口可以实现多继承

接口类的作用:

  在Java中  能够满足接口隔离原则 且完成多继承的约束、、

  而在python中 满足接口隔离的原则,由于python本身支持多继承所以就不需要接口的概念了

抽象类 和接口类

在python中:

  并没有什么不同  都是用来约束字类中的方法的

  只要是抽象类和接口类中被abstractmethod装饰的方法都需要被字类实现

  需要注意的是 当多个字类之间有相同的功能也有不同的功能的时候 应该采用多个接口类进行约束  (这个时候我感觉是定义不同的约束类 来对不同的字类进行约束)

在java中抽象类和接口类完全的不同的

  抽象类的本质还是一个类 是类就必须遵循单继承的规则 所以一个字类被抽象类约束 那么它只能被一个父类控制

  当多个类之间有相同的功能有不同的功能的时候 java只能用接口来解决问题

面试的时候:

  抽象类:是python中定义类的一种规范

在公司写代码的 时候:

  如果遇到抽象类 记得按照抽象类中的贵伐一一实现对应的方法

java多态在一个类之下发展出来的多个类的对象都可以作为参数传入这里

无论是python2还是python3天生自带多态 应为都是默认继承object类

一个对象的数据类型就是它所在的类

# 鸭子类型
# class QQpay():
#     def pay(self,money):
#         print(‘使用qq支付了%s元‘%money)
#
# class Wechatpay():
#     def pay(self,money):
#         print(‘使用微信支付了%s元‘%money)
#
# def pay(pay_obj,money):
#     pay_obj.pay(money)

多态和鸭子类型
# 多态 通过继承实现
# java 在一个类之下发展出来的多个类的对象都可以作为参数传入一个函数或者方法
# 在python中不需要刻意实现多态,因为python本身自带多态效果
# 鸭子类型
# 不是通过具体的继承关系来约束某些类中必须有哪些方法名
# 是通过一种约定俗成的概念来保证在多个类中相似的功能叫相同的名字

原文地址:https://www.cnblogs.com/askzyl/p/8856386.html

时间: 2024-08-02 16:37:03

抽象类接口类的相关文章

19 抽象类 接口类 封装. 多态

主要内容: 1.  抽象类(接口类): 制定一个规范  : from abc import ABCMeta,abstractmethod class Payment(metaclass=ABCMeta): @abstractmethod def pay(self):pass class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' % self.mon

day_21(接口类,抽象类,封装)

class Payment: # 抽象类,或者接口类:制定一个规范. def pay(self):pass class QQ(Payment): def pay(self,money): print('您用qq支付了%s元' % money) class Ali(Payment): def pay(self,money): print('您用支付宝支付了%s元' % money) class Wechat(Payment): def pay(self,money): print('您用微信支付了

python 2018.7.25 接口类,抽象类

python 没有接口这个概念 接口类,抽象类: 制定一个规范. from abc import ABCMeta,abstractmethodclass Payment(metaclass=ABCMeta): # 抽象类(接口类): @abstractmethod def pay(self): pass # 制定了一个规范 class Alipay(Payment): def __init__(self,money): self.money = money def pay(self): prin

接口类抽象类

接口类(抽象类): 在python中是没有接口类,可以把接口类和抽象类视为同一种定义:制定一个规范举例:收到项目经理的要求,写一个支付: #第一版 class Alipay: def __init__(self,money): self.money = money def pay(self): print('zfb支付了%s' % self.money) class Jd: def __init__(self, money): self.money = money def pay(self):

面向对象:接口类、抽象类

# python 没有接口这个概念# 接口类,抽象类: 制定一个规范. 接口类,抽象类:python中就是一样的 1,归一化设计. 2,制定一个规范,凡是继承我类的类,必须有我规定的方法. # 第一版 class Alipay: def __init__(self,money): self.money = money def pay(self): print('使用支付宝支付了%s' %self.money) class Jdpay: def __init__(self, money): sel

C++中的抽象类和接口类

接口类是一种特殊的抽象类. 抽象类: 类中至少含有一个纯虚函数. 抽象类的子类如果没有完全实现父类的纯虚函数,那么该子类也是一个抽象类. 接口类: 满足两个条件 (1)没有成员变量 (2)所有成员函数都为public且纯虚. 原文地址:https://www.cnblogs.com/Stephen-Qin/p/12436180.html

PHP中的特殊类,接口类和抽象类(都不能直接实例化)

接口类不用实例化,需要一一实现接口定义的所有方法.关键字interface implements 接口interface 是一个规定,给人继承用的东西,有点像抽象类在里面定义的方法,却不去实例化,而需要别的类去implements 它,而且必须一一实现接口定义的所有方法, 实际上接口类说白了,就是一个类的模板,一个类的规定, 举个例子interface Shop { public function buy($gid); public function sell($gid); public fun

php 接口类与抽象类的实际作用

1.php 接口类:interface 其实他们的作用很简单,当有很多人一起开发一个项目时,可能都会去调用别人写的一些类,那你就会问,我怎么知道他的某个功能的实现方法是怎么命名的呢,这个时候php接口类就起到作用了,当我们定义了一个接口类时,它里面的方式是下面的子类必须实现的,比如 : interface Shop { public function buy($gid); public function sell($gid); public function view($gid); } 我声明一

python开发面向对象基础:接口类&抽象类&多态&多继承

一,接口类 继承有两种用途: 一:继承基类的方法,并且做出自己的改变或者扩展(代码重用) 二:声明某个子类兼容于某基类,定义一个接口类Interface,接口类中定义了一些接口名(就是函数名)且并未实现接口的功能,子类继承接口类,并且实现接口中的功能 开发中容易出现的问题 1 class Alipay: 2 ''' 3 支付宝支付 4 ''' 5 def pay(self,money): 6 print('支付宝支付了%s元'%money) 7 8 class Applepay: 9 ''' 1