编写一个程序,声明抽象基类Shape,由它派生出3个派生类:Circle(圆形)、Rectangle(矩形)、Triangle(三角形),用一个函数printArea分别输出以上三者的面积,3个图形的数据在定义对象时给定。
时间: 2023-12-06 13:45:00 浏览: 120
设计一个抽象类图形类,在该类中包含有至少两个抽象方法求周长和求面积,分别定义圆形类、长方形类、正方形类、三角形类来继承图形类,并实现上述两个方法
5星 · 资源好评率100%
以下是一个可能的实现:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return 3.14 * 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(3, 4)
triangle = Triangle(2, 6)
printArea(circle)
printArea(rectangle)
printArea(triangle)
```
输出结果为:
```
面积为: 78.5
面积为: 12
面积为: 6.0
```
在这个实现中,我们定义了一个抽象基类`Shape`,其中包含一个抽象方法`area()`,表示计算图形面积。然后我们通过继承`Shape`来定义三个派生类:`Circle`、`Rectangle`和`Triangle`,分别表示圆形、矩形和三角形。这三个派生类都实现了`area()`方法,用于计算自己的面积。
最后我们定义了一个`printArea()`函数,它的参数是一个`Shape`对象,可以接受任何派生自`Shape`的类。该函数输出该对象的面积。我们创建了一个圆形、矩形和三角形对象,并将它们分别传递给`printArea()`函数,从而输出了它们的面积。
阅读全文