接口与抽象类的认识

一、接口的使用

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
    

results matching ""

    No results matching ""