抽象类
Posted whylinux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象类相关的知识,希望对你有一定的参考价值。
# 抽象类 # 一般情况下都是单继承 能实现的功能都是一样的 # 抽象类也是一种规范,在python中实现起来与接口类类似 # 多继承的情况 由于功能比较复杂,所以不容易抽象出相同的功能的具体实现写在父类中.而单继承实现的功能都是一样的,所以在父类中 # 不管是抽象类还是接口类都是面向对象的开发规范 # 在python中没有接口类(但是为了规范,所以弄了接口类),在java中,因为java中没有多继承,所以创建了一个接口类来实现多继承 # python中支持抽象类,且可以在抽象类中实现python代码 # 为什么要有抽象类 # 如果说类是从一堆对象中抽取相同的内容而来的,那么抽象类就是从一堆类中抽取相同的内容而来的,抽取的内容包括数据属性和函数属性 # 比如我们有香蕉的类、有苹果类、有桃子类,从这些类抽取相同的内容就是水果这个抽象的类,你吃水果时,要么是吃一个具体的香蕉、要么是吃一个具体的桃子,你永远无法吃到一个叫做水果的东西 from abc import abstractmethod, ABCMeta # 抽象类,可以在类中实现部分代码(实际上,在python中接口类与抽象类实现是一样的(因为python中没有接口类,接口类是java弄的,java为了解决多继承而存在的),所以如果抽象类中可以实现部分代码,那么接口类其实也是可以实现部分代码的,但是因为接口类众所周知是不能实现方法的,所以我们默认不实现) class All_file(metaclass=ABCMeta): @abstractmethod def read(self): # 子类必须实现read方法,否则实例化时报错 print(‘haha‘) # 可以实现部分代码 @abstractmethod def write(self):# 子类必须实现read方法,否则实例化时报错 pass class Txt(All_file): def read(self): # 子类必须实现 super().read() print(‘===‘) def write(self): print(‘++++‘) t = Txt() t.read() # haha ===
以上是关于抽象类的主要内容,如果未能解决你的问题,请参考以下文章
如何通过单击片段内的线性布局从片段类开始新活动?下面是我的代码,但这不起作用
设计模式 行为型模式 -- 观察者模式(发布-订阅(Publish/Subscribe)模式)