2、已知基类Shape中只有方法area()(求面积),要求用多态求出圆的面积和三角形面积
时间: 2024-04-07 13:33:03 浏览: 74
好的,下面是使用Python编写的基类Shape和派生类Circle和Triangle的代码,以实现多态求出圆的面积和三角形面积:
```python
import math
class Shape:
def area(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
class Triangle(Shape):
def __init__(self, base, height):
self.base = base
self.height = height
def area(self):
return 0.5 * self.base * self.height
# 创建一个圆对象和一个三角形对象
circle = Circle(5)
triangle = Triangle(4, 3)
# 使用多态调用各自的area方法,并输出面积
print("圆的面积:", circle.area())
print("三角形的面积:", triangle.area())
```
运行以上代码,会输出以下结果:
```
圆的面积: 78.53981633974483
三角形的面积: 6.0
```
在这个例子中,基类Shape中定义了一个抽象方法area(),而派生类Circle和Triangle分别重写了这个方法。Circle类表示圆,使用半径计算面积的公式为πr²;Triangle类表示三角形,使用底边和高计算面积的公式为0.5bh。通过多态,即使调用的是Shape类的area()方法,实际上会根据对象的类型调用对应派生类的area()方法,从而求出圆的面积和三角形的面积。
阅读全文