定义一个Shape类,记承任意形状的位置,在 shape类的基础上派生出一-个Rectangle 炎和一个Gircle 类,在Rectangle 类的基础上派生出一个 square 类,必须保证往个炎都有计算面积和恩 长的功能
时间: 2024-05-15 19:14:33 浏览: 142
以下是代码实现:
```python
import math
class Shape:
def __init__(self, x, y):
self.x = x
self.y = y
def area(self):
pass
def perimeter(self):
pass
class Rectangle(Shape):
def __init__(self, x, y, width, height):
super().__init__(x, y)
self.width = width
self.height = height
def area(self):
return self.width * self.height
def perimeter(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, x, y, radius):
super().__init__(x, y)
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
def perimeter(self):
return 2 * math.pi * self.radius
class Square(Rectangle):
def __init__(self, x, y, side):
super().__init__(x, y, side, side)
self.side = side
def area(self):
return self.side ** 2
def perimeter(self):
return 4 * self.side
```
解释一下:
- 首先定义了一个`Shape`类,它有`x`和`y`两个属性,表示位置。同时它有一个`area`方法和一个`perimeter`方法,分别用于计算面积和周长。这里我们先将这两个方法定义为空方法,因为不同的形状计算面积和周长的方法不一样,需要在子类中具体实现。
- 然后派生出一个`Rectangle`类,它继承了`Shape`类,并在此基础上增加了`width`和`height`两个属性。它重写了父类的`area`方法和`perimeter`方法,具体实现是按矩形的公式计算面积和周长。
- 接着派生出一个`Circle`类,它也继承了`Shape`类,并在此基础上增加了`radius`属性。同样地,它重写了父类的`area`方法和`perimeter`方法,具体实现是按圆的公式计算面积和周长。
- 最后派生出一个`Square`类,它继承了`Rectangle`类,并在此基础上将`width`和`height`合并为一个`side`属性。同样地,它重写了父类的`area`方法和`perimeter`方法,具体实现是按正方形的公式计算面积和周长。
这样就实现了一个简单的形状类继承体系,可以计算不同形状的面积和周长。
阅读全文