编写代码,定义一个形状基类,有 2 个属性:面积和周长,以及两个无返回值的方 法:area()和 perimeter(),分别计算形状的面积和周长,从基类派生出三个子类:三角形、 矩形、圆,重载基类的两个方法。
时间: 2024-03-24 12:36:00 浏览: 9
好的,以下是 Python 代码实现:
```python
import math
class Shape:
def __init__(self):
self.area_val = 0
self.perimeter_val = 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):
s = (self.a + self.b + self.c) / 2
self.area_val = math.sqrt(s * (s - self.a) * (s - self.b) * (s - self.c))
return self.area_val
def perimeter(self):
self.perimeter_val = self.a + self.b + self.c
return self.perimeter_val
class Rectangle(Shape):
def __init__(self, width, height):
super().__init__()
self.width = width
self.height = height
def area(self):
self.area_val = self.width * self.height
return self.area_val
def perimeter(self):
self.perimeter_val = 2 * (self.width + self.height)
return self.perimeter_val
class Circle(Shape):
def __init__(self, radius):
super().__init__()
self.radius = radius
def area(self):
self.area_val = math.pi * self.radius ** 2
return self.area_val
def perimeter(self):
self.perimeter_val = 2 * math.pi * self.radius
return self.perimeter_val
```
在这个示例代码中,定义了一个 `Shape` 类作为基类,它有两个属性 `area_val` 和 `perimeter_val`,分别表示形状的面积和周长。它还有两个无返回值的方法 `area()` 和 `perimeter()`,分别用来计算形状的面积和周长。
然后我们从 `Shape` 类派生出三个子类:`Triangle`、`Rectangle` 和 `Circle`。这些子类都重载了基类的 `area()` 和 `perimeter()` 方法,根据不同的形状计算出对应的面积和周长,并将结果存储到基类的属性中。
你可以通过创建这些类的实例来计算对应形状的面积和周长,例如:
```python
# 创建一个三角形实例
t = Triangle(3, 4, 5)
print("Triangle area:", t.area()) # 输出:Triangle area: 6.0
print("Triangle perimeter:", t.perimeter()) # 输出:Triangle perimeter: 12
# 创建一个矩形实例
r = Rectangle(2, 3)
print("Rectangle area:", r.area()) # 输出:Rectangle area: 6
print("Rectangle perimeter:", r.perimeter()) # 输出:Rectangle perimeter: 10
# 创建一个圆实例
c = Circle(5)
print("Circle area:", c.area()) # 输出:Circle area: 78.53981633974483
print("Circle perimeter:", c.perimeter()) # 输出:Circle perimeter: 31.41592653589793
```
以上就是这个问题的答案,希望能对你有所帮助!