编写代码,定义一个形状基类,有2个属性:面积和周长,以及两个无返回值的方法:area()和perimeter(),分别计算形状的面积和周长,从基类派生出三个子类:三角形、矩形、圆,重载基类的两个方法。
时间: 2023-06-27 17:02:02 浏览: 95
Java:使用抽象类定义一个“形状类”,能够计算周长和面积。
下面是代码实现:
```python
import math
class Shape:
def __init__(self):
self.area = 0
self.perimeter = 0
def area(self):
pass
def perimeter(self):
pass
class Triangle(Shape):
def __init__(self, base, height, side1, side2):
super().__init__()
self.base = base
self.height = height
self.side1 = side1
self.side2 = side2
def area(self):
self.area = 0.5 * self.base * self.height
def perimeter(self):
self.perimeter = self.base + self.side1 + self.side2
class Rectangle(Shape):
def __init__(self, length, width):
super().__init__()
self.length = length
self.width = width
def area(self):
self.area = self.length * self.width
def perimeter(self):
self.perimeter = 2 * (self.length + self.width)
class Circle(Shape):
def __init__(self, radius):
super().__init__()
self.radius = radius
def area(self):
self.area = math.pi * self.radius ** 2
def perimeter(self):
self.perimeter = 2 * math.pi * self.radius
```
在上面的代码中,我们定义了一个基类 `Shape`,它有两个属性:`area` 和 `perimeter`,以及两个方法:`area()` 和 `perimeter()`,分别用于计算形状的面积和周长。然后我们从基类派生了三个子类:`Triangle`、`Rectangle` 和 `Circle`,并且重载了基类的两个方法,分别用于计算三角形、矩形和圆的面积和周长。在每个子类的构造函数中,我们初始化了形状的参数,并且调用了基类的构造函数,以初始化基类的属性。在每个子类的方法中,我们计算了形状的面积和周长,并且把它们赋值给基类的属性。
阅读全文