抽象类的子类只能是抽象类吗?
时间: 2023-12-23 11:27:30 浏览: 129
抽象类的子类不一定只能是抽象类,它可以是普通的类或者抽象类。当一个抽象类的子类是普通类时,它需要实现抽象类中的所有抽象方法。而当一个抽象类的子类也是抽象类时,它可以选择性地实现抽象方法,或者将抽象方法继续声明为抽象方法。下面是一个示例:
```python
from abc import ABC, abstractmethod
# 定义一个抽象类
class AbstractClass(ABC):
@abstractmethod
def abstract_method(self):
pass
# 定义一个普通类继承抽象类
class ConcreteClass(AbstractClass):
def abstract_method(self):
print("实现了抽象方法")
# 定义一个抽象类继承抽象类
class AnotherAbstractClass(AbstractClass):
@abstractmethod
def another_abstract_method(self):
pass
# 定义一个抽象类的子类继承抽象类
class SubAbstractClass(AnotherAbstractClass):
def abstract_method(self):
print("实现了抽象方法")
def another_abstract_method(self):
print("实现了另一个抽象方法")
# 创建对象并调用方法
concrete_obj = ConcreteClass()
concrete_obj.abstract_method() # 输出:实现了抽象方法
sub_abstract_obj = SubAbstractClass()
sub_abstract_obj.abstract_method() # 输出:实现了抽象方法
sub_abstract_obj.another_abstract_method() # 输出:实现了另一个抽象方法
```
阅读全文