接口类的多继承

# 动物园

# 老虎 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

# 接口隔离原则:使用多个专门的接口,而不使用单一的总接口。即客户端不应该依赖那些不需要的接口
    # 上面的例子刚好满足接口隔离原则

# 接口类的使用场景:实现一个类时,想要规范这个类中哪些函数是必须要实现的,如果不实现在实例化时就进行报错,这种场景下可以用接口类进行规范
    # 将类必须要实现的方法,写在一个接口类中,然后那个类去继承这个接口,如果那个类没有实现接口规定的方法,则实例化时报错

原文地址:https://www.cnblogs.com/whylinux/p/9737386.html

时间: 2024-10-30 02:27:22

接口类的多继承的相关文章

python -------继承 接口类

# 单继承 ***** # 先抽象再继承,几个类之间的相同代码抽象出来,成为父类 # 子类自己没有的名字,就可以使用父类的方法和属性 # 如果子类自己有,一定是先用自己的 # 在类中使用self的时候,一定要看清楚self指向谁 # 多继承 *** # 新式类和经典类: # 多继承寻找名字的顺序 : 新式类广度优先,经典类深度优先 # 新式类中 有一个类名.mro方法,查看广度优先的继承顺序 # python3中 有一个super方法,根据广度优先的继承顺序查找上一个类 ------------

接口类

# 接口类 来源于设计模式,一种思想 # python原生不支持 # 抽象类 来源设计模式,一种思想 # python原生支持的 from abc import abstractmethod, ABCMeta # 规范 接口类,必须指定元类为ABCMeta,必须用@abstractmethod装饰器 # 规范:接口类或者抽象类都可以 # 接口类:默认多继承,接口类中的所有的方法都必须没有实现 # 抽象类:不支持多继承,抽象类中的方法可以有一些代码的实现 # Payment就是一个接口类,用来制定

抽象类 和 接口类

1 #接口类 也可以理解为抽象类 用来建立一套规范 接口是一种设计思想 设计模式 2 #接口类 默认多继承 接口类中的所有方法,都必须不能实现 --java 3 #抽象类 不支持多继承,抽象类中可以实现一些方法 鸭子模型 --java 4 from abc import abstractmethod,ABCMeta 5 class Payment(metaclass=ABCMeta):#元类 默认的元类是type 6 @abstractmethod 7 def pay(self): 8 rais

(二十二)类与对象 ---- 继承

什么时候用继承? 1.当类之间有显著不同,且较小的类是较大的类的组件时,用组合比较好 比如机器人类是一个大类,躯干类.胳膊类.腿类是小类 2.当类之间有很多相同的属性与功能,提取这些共性作为基类,用继承比较好 比如鸡和鸭,我们可以提取他们的共性(两只翅膀.用两只脚走路)做一个禽类,但是他们也有各自独特的个性(鸡会打鸣,鸭会游泳) class qing(): #共性提取为一个基类(禽类) wing = 2 #父类数据属性 def __init__(self,owner): self.owner =

023_接口类,抽象类,多态,鸭子类型,封装

1,接口类 1 class Wechat(): 2 def pay(self,money): 3 print('已经用微信支付了%s元'%money) 4 class Alipay(): 5 def pay(self,money): 6 print('已经用支付宝支付了%s元' % money) 7 wechat = Wechat() 8 ali = Alipay() 9 # wechat.pay(100) 10 # ali.pay(200) 11 #将上面两句用下面的替换, 12 def pa

初识面向对象-接口类、抽象类、封装

接口类 # java : 面向对象编程# 设计模式 —— 接口# 接口类 : python原生不支持# 抽象类 : python原生支持的from abc import abstractmethod,ABCMetaclass Payment(metaclass=ABCMeta): # 元类 默认的元类 type @abstractmethod def pay(self,money):pass # 没有实现这个方法# 规范 :接口类或者抽象类都可以# 接口类 支持多继承,接口类中的所有的方法都必须

[Java] 类和接口的初始化步骤 - 继承方面

类和接口在初始化化时,处理继承层级的方法不一样. 类继承的初始化:通过引用 static 字段,触发某个类的初始化,则声明该字段的类,以及该类的父类被初始化. 接口继承的初始化:通过引用 static 字段,触发某个接口的初始化,则声明该字段的接口会被初始化,但该接口的父接口不会被初始化. 想了解其他触发类初始化的方法,可参看另一篇博文 类的初始化步骤 . 注意一点,接口字段全部隐式地被修饰为 public, static, final .因此,所有的接口字段实际上都是 static 的,无论有

JAVA-获取实现了指定接口类的所有实现类或继承了指定类的所有子类

实际编程过程中,我们可能遇到这样的问题,就是获取实现了指定接口类的所有实现类. 本工具类就提供了这样的功能.下面是工具类的详细解析: /** * 查找指定路径下面实现指定接口的全部类 * @author longyin * @author 博客地址:http://blog.csdn.net/u010156024 * 如果大家有什么问题或疑问,欢迎留言或评论,谢谢!! */ public class ClassUtil { @SuppressWarnings({ "rawtypes",

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

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