自定义一个Shape类(形状),封装必要的属性(side)和方法。自定义Rectangle(矩形类),Square类(正方形类)。根据继承的原则,Rectangle类可设为Shape类的子类,Square类为Rectangle类的子类。试编程实现各形状的面积,要求子类和父类采用构造器初始化属性值。
时间: 2024-03-02 11:51:49 浏览: 142
以下是一个简单的实现示例:
```python
class Shape:
def __init__(self, side):
self.side = side
def area(self):
pass
class Rectangle(Shape):
def __init__(self, length, width):
super().__init__(2*(length + width))
self.length = length
self.width = width
def area(self):
return self.length * self.width
class Square(Rectangle):
def __init__(self, side):
super().__init__(side, side)
def area(self):
return self.length ** 2
# 测试代码
rectangle = Rectangle(4, 6)
print("矩形面积:", rectangle.area())
print("矩形周长:", rectangle.side)
square = Square(5)
print("正方形面积:", square.area())
print("正方形周长:", square.side)
```
上述代码中,我们定义了一个`Shape`类,它有一个`side`属性和一个`area()`方法(计算面积)。然后我们定义了一个`Rectangle`类,它是`Shape`类的子类,有`length`和`width`两个属性。在`Rectangle`类中我们重写了`area()`方法,根据矩形的面积公式进行计算。最后,我们定义了一个`Square`类,它是`Rectangle`类的子类,因为正方形是矩形的一种特殊情况,所以我们只需要在`Square`类中重写`area()`方法即可。
在测试代码中,我们创建了一个矩形实例和一个正方形实例,并分别调用它们的`area()`方法和`side`属性。
阅读全文