接口与抽象类的认识
一、接口的使用
Java
接口是一系列方法的声明,是一些方法特征的集合,一个接口只有方法的特征没有方法的实现,因此这些方法可以在不同的地方被不同的类实现,而这些实现可以具有不同的行为(功能)。简单一句话就是:定义一种规范
1、
python
中定义接口要导入包abc
import abc
2、定义一个接口
import abc class All_file(metaclass=abc.ABCMeta): """ 定义一个接口 """ @abc.abstractmethod def read(self): pass @abc.abstractmethod def write(self): pass
3、实现接口
class File(All_file): def __init__(self): pass def read(self): print('我是读的方法') def write(self): print('我是写的方法')
4、调用
if __name__ == "__main__": f = File() f.read()
5、接口也可以继承接口
import abc class Interface1(metaclass=abc.ABCMeta): @abc.abstractmethod def read(self): pass class Interface2(Interface1): @abc.abstractmethod def write(self): pass def read(self): print('我的读的方法') class Classes(Interface2): def write(self): print('我的写的方法') if __name__ == "__main__": c = Classes() c.write() c.read()
二、抽象类
上面接口中我们使用了装饰器
@abc.abstractmethod
装饰的方法叫抽象方法, 在java
中比较经典的一句话:是有抽象方法的一定的抽象类,但是抽象类不一定有抽象方法
1、在
python
中类定义抽象方法抽象方法是一种特殊的方法:它只有声明,而没有具体的实现
import abc class Test1(object): def __init__(self): pass @abc.abstractmethod def printInfo(self): pass
2、直接创建抽象类
@abc.abstractmethod class Test2(object): def printInfo(self): pass