编写程序得到长方体的表面积和体积。构建抽象类shape,声明两个抽象方法(或者两个虚方法)表面积及体积,将子类对象转为父类对象实现方法的调用。
时间: 2024-02-16 22:02:47 浏览: 123
好的,这是一个编程问题,我来给你提供一个 Python 的实现示例:
```python
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def surface_area(self):
pass
@abstractmethod
def volume(self):
pass
class Cuboid(Shape):
def __init__(self, length, width, height):
self.length = length
self.width = width
self.height = height
def surface_area(self):
return 2 * (self.length * self.width + self.width * self.height + self.height * self.length)
def volume(self):
return self.length * self.width * self.height
c = Cuboid(3, 4, 5)
print("Surface Area:", c.surface_area())
print("Volume:", c.volume())
# 子类对象转为父类对象实现方法的调用
s = Shape()
s.surface_area()
s.volume()
```
输出结果:
```
Surface Area: 94
Volume: 60
TypeError: Can't instantiate abstract class Shape with abstract methods surface_area, volume
```
这个程序中,我们定义了一个抽象类 Shape,它包含两个抽象方法 surface_area 和 volume,表示计算表面积和体积的方法。然后我们定义了一个子类 Cuboid,它继承了 Shape 类,并实现了 surface_area 和 volume 方法。在主程序中,我们创建了一个 Cuboid 对象 c,并调用它的 surface_area 和 volume 方法来计算长方体的表面积和体积。最后,我们试图创建一个 Shape 对象,并调用它的 surface_area 和 volume 方法,但是由于 Shape 是一个抽象类,不能直接实例化,所以会报错。
阅读全文