1.设计抽象基类Shape类 2.由Shape类派生出Circle圆类,Rectangle矩形类,Triangle三角形类 3.用函数printArea分别实现圆类、矩形类、三角形类的面积 4.用基类Shape类的指针输出圆类、矩形类、三角形类的面积
时间: 2024-03-07 12:49:03 浏览: 53
好的,这是一个关于面向对象编程的问题。以下是代码实现:
```python
from abc import ABC, abstractmethod
import math
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * (self.radius ** 2)
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def area(self):
return self.width * self.height
class Triangle(Shape):
def __init__(self, base, height):
self.base = base
self.height = height
def area(self):
return 0.5 * self.base * self.height
def printArea(shape):
print("面积为:", shape.area())
# 测试代码
circle = Circle(5)
rectangle = Rectangle(4, 6)
triangle = Triangle(3, 8)
printArea(circle)
printArea(rectangle)
printArea(triangle)
shapes = [circle, rectangle, triangle]
for shape in shapes:
printArea(shape)
```
这段代码中,我们定义了一个抽象基类`Shape`,其中包含了一个抽象方法`area()`。由`Shape`类派生出`Circle`、`Rectangle`和`Triangle`三个具体的形状类,并且实现了它们的`area()`方法。我们还定义了一个`printArea()`函数,用于输出一个形状的面积。最后,我们进行了一些简单的测试,分别输出了三种形状的面积,并且使用`Shape`类的指针输出了它们的面积。
注意,在定义抽象基类时,我们使用了`abc`模块中的`ABC`类和`abstractmethod`装饰器。这是Python中实现抽象类的方法。一个抽象类不能被实例化,只能被用作其他类的基类。抽象类的子类必须实现父类中定义的抽象方法,否则它也会被视为抽象类。
阅读全文