编写代码,定义一个形状基类,有 2 个属性:面积和周长,以及两个无返回值的方 法:area()和 perimeter(),分别计算形状的面积和周长,从基类派生出三个子类:三角形、 矩形、圆,重载基类的两个方法。
时间: 2024-03-22 22:40:00 浏览: 93
好的,以下是 Python 代码实现:
```python
import math
class Shape:
def __init__(self):
self.area_value = 0
self.perimeter_value = 0
def area(self):
pass
def perimeter(self):
pass
class Triangle(Shape):
def __init__(self, a, b, c):
super().__init__()
self.a = a
self.b = b
self.c = c
def area(self):
p = (self.a + self.b + self.c) / 2
self.area_value = math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))
return self.area_value
def perimeter(self):
self.perimeter_value = self.a + self.b + self.c
return self.perimeter_value
class Rectangle(Shape):
def __init__(self, width, height):
super().__init__()
self.width = width
self.height = height
def area(self):
self.area_value = self.width * self.height
return self.area_value
def perimeter(self):
self.perimeter_value = 2 * (self.width + self.height)
return self.perimeter_value
class Circle(Shape):
def __init__(self, radius):
super().__init__()
self.radius = radius
def area(self):
self.area_value = math.pi * (self.radius ** 2)
return self.area_value
def perimeter(self):
self.perimeter_value = 2 * math.pi * self.radius
return self.perimeter_value
```
在上面的代码中,我们定义了一个基类 `Shape`,它有两个属性 `area_value` 和 `perimeter_value`,分别表示形状的面积和周长。同时,它还有两个无返回值的方法 `area()` 和 `perimeter()`,分别用于计算形状的面积和周长。这两个方法在基类中只是占位符,没有具体实现。
然后,我们从基类派生出三个子类:`Triangle`、`Rectangle`和`Circle`。这些子类都重载了基类的两个方法,具体实现了计算面积和周长的逻辑。
在 `Triangle` 类中,我们使用海伦公式来计算三角形的面积,使用三边之和来计算周长;在 `Rectangle` 类中,我们直接使用长和宽相乘来计算面积,使用长和宽相加再乘以2来计算周长;在 `Circle` 类中,我们使用圆的面积公式和周长公式来计算面积和周长。
注意,我们在每个子类的构造函数中都调用了基类的构造函数,以确保 `area_value` 和 `perimeter_value` 被初始化为0。
阅读全文