设计一个基类,从基类派生圆,从圆派生圆柱,设计成员函数输出他们的面积和体积
时间: 2025-01-02 12:44:33 浏览: 14
设计这样的类结构,我们首先创建一个基础几何形状类,然后衍生出更具体的圆形和圆柱形类。这里是一个简单的Python示例:
```python
import math
# 基础几何形状类
class Shape:
def __init__(self, name):
self.name = name
# 抽象方法,用于计算面积
def area(self):
pass
# 抽象方法,用于计算体积
def volume(self):
pass
# 圆类,继承自Shape
class Circle(Shape):
def __init__(self, radius):
super().__init__("Circle")
self.radius = radius
def area(self):
return math.pi * (self.radius ** 2)
# 圆柱体不需要体积属性,因为它的体积需要两个尺寸(半径和高),所以这里省略volume方法
# 圆柱体类,也继承自Shape
class Cylinder(Shape):
def __init__(self, radius, height):
super().__init__("Cylinder")
self.radius = radius
self.height = height
def area(self):
return 2 * math.pi * self.radius * (self.radius + self.height) # 圆柱侧面积
def volume(self):
return math.pi * (self.radius ** 2) * self.height # 圆柱体积
# 示例用法
circle = Circle(5)
cylinder = Cylinder(3, 7)
print(circle.name, "area:", circle.area())
print(circle.name, "volume:", "Not applicable") # 圆没有体积
print(cylinder.name, "area:", cylinder.area())
print(cylinder.name, "volume:", cylinder.volume())
```
在这个例子中,`Circle` 和 `Cylinder` 都覆盖了基类 `Shape` 的 `area` 方法,并实现了各自特有的 `volume` 方法。注意,对于 `Circle` 类来说,由于它没有高度这个特性,因此计算体积并不适用。
阅读全文