更新时间:2024-03-13 来源:黑马程序员 浏览量:

在Python中,虽然没有严格的接口类,但是可以通过抽象类来实现类似接口的概念。接口类和抽象类都是面向对象编程中的概念,它们的目的是为了规范和约束子类的行为。下面是它们的区别和联系:
(1)抽象类是一个包含抽象方法(即没有实现的方法)的类,不能直接实例化。
(2)抽象类可以包含具体的方法,子类可以直接继承并使用这些具体方法。
(3)子类必须实现抽象类中的所有抽象方法,否则会报错。
(4)用于约束子类必须实现的方法,提供了一种规范。
(1)接口类仅包含方法签名,没有任何方法实现。
(2)接口类定义了一组方法,子类必须实现这些方法,但不提供具体的实现。
(3)在Python中,没有严格的接口类,但可以通过抽象类来实现接口的概念。
  下面是一个简单的示例代码演示了抽象类和接口类的概念:
from abc import ABC, abstractmethod
# 定义抽象类
class Shape(ABC):
    @abstractmethod
    def area(self):
        pass
    
    @abstractmethod
    def perimeter(self):
        pass
# 定义一个子类,必须实现抽象类中的所有抽象方法
class Rectangle(Shape):
    def __init__(self, width, height):
        self.width = width
        self.height = height
        
    def area(self):
        return self.width * self.height
    
    def perimeter(self):
        return 2 * (self.width + self.height)
# 定义一个子类,同样必须实现抽象类中的所有抽象方法
class Circle(Shape):
    def __init__(self, radius):
        self.radius = radius
    
    def area(self):
        return 3.14 * self.radius * self.radius
    
    def perimeter(self):
        return 2 * 3.14 * self.radius
# 实例化子类并调用方法
rectangle = Rectangle(5, 4)
print("Rectangle area:", rectangle.area())
print("Rectangle perimeter:", rectangle.perimeter())
circle = Circle(3)
print("Circle area:", circle.area())
print("Circle perimeter:", circle.perimeter())在上面的示例中,Shape类就是一个抽象类,定义了两个抽象方法area()和perimeter()。Rectangle和 Circle类是Shape类的子类,必须实现area()和perimeter()方法,否则会报错。这就是抽象类的作用,用于约束子类的行为。
1024首播|39岁程序员逆袭记:不被年龄定义,AI浪潮里再迎春天
2025-10-241024程序员节丨10年同行,致敬用代码改变世界的你
2025-10-24【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19