定义一个具有多态性的基类Shape,继承以下一些类:圆Circle类(坐标点和半径构成),长方形Rectangle类(两个不重合的坐标点构成),三角形Triangle类(三个瓦不重合的坐标点构成)。
时间: 2024-05-01 20:20:58 浏览: 101
下面是一个示例代码实现:
```python
class Shape:
def __init__(self):
pass
def area(self):
pass
class Circle(Shape):
def __init__(self, x, y, r):
self.x = x
self.y = y
self.r = r
def area(self):
return 3.14 * self.r ** 2
class Rectangle(Shape):
def __init__(self, x1, y1, x2, y2):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
def area(self):
return abs(self.x2 - self.x1) * abs(self.y2 - self.y1)
class Triangle(Shape):
def __init__(self, x1, y1, x2, y2, x3, y3):
self.x1 = x1
self.y1 = y1
self.x2 = x2
self.y2 = y2
self.x3 = x3
self.y3 = y3
def area(self):
return abs((self.x1 * (self.y2 - self.y3) + self.x2 * (self.y3 - self.y1) + self.x3 * (self.y1 - self.y2)) / 2)
```
说明:
- Shape类是基类,定义了一个抽象方法area(),用于计算图形的面积。
- Circle、Rectangle、Triangle类都继承自Shape类,并且实现了自己的构造方法和计算面积的方法。
- Circle类的构造方法接收坐标点和半径,计算面积时使用圆的公式。
- Rectangle类的构造方法接收两个坐标点,计算面积时使用长方形的公式。
- Triangle类的构造方法接收三个坐标点,计算面积时使用海龙公式。
这样,我们就可以通过多态性,使用同一个函数来计算不同图形的面积。例如:
```python
shapes = [Circle(0, 0, 5), Rectangle(0, 0, 10, 5), Triangle(0, 0, 3, 4, 5, 6)]
for shape in shapes:
print(shape.area())
```
输出:
```
78.5
50
1.5
```
阅读全文