Python抽象类和接口类的区别和联系

2023-04-02 00:00:00 接口 区别 抽象类

抽象类和接口类都是用来定义一些规范,让子类去实现。它们的区别在于:

抽象类可以有实现的方法,而接口类只能有声明的方法。
子类继承抽象类时,必须实现所有的抽象方法,而接口类可以只实现部分方法。
下面是一个简单的例子,演示了如何使用接口类:

from abc import ABC, abstractmethod

class IPrintable(ABC):
    @abstractmethod
    def print(self):
        pass

class Book(IPrintable):
    def __init__(self, title):
        self.title = title

    def print(self):
        print("Book: {}".format(self.title))

class Magazine(IPrintable):
    def __init__(self, name):
        self.name = name

    def print(self):
        print("Magazine: {}".format(self.name))

book = Book("Python编程从入门到放弃")
book.print()

magazine = Magazine("Python之禅")
magazine.print()

在这个例子中,IPrintable 是一个接口类,它定义了一个 print 方法。Book 和 Magazine 是 IPrintable 的子类,它们必须实现 print 方法。在这个例子中,我们分别实例化了 Book 和 Magazine,并调用了它们的 print 方法,输出了不同的结果。

希望这个例子能够帮助你理解抽象类和接口类的区别和联系。

相关文章