定义一个抽象基类Shape,Shape不需要编写数据成员和方法: class Shape(object): pass 在Shape类上派生出子类Rectangle和Circle,并在Rectangle类上派生出子类Square。三者都有获取周长和面积的方法getCircumference()和getArea()。 编写程序生成三种形状的对象,并打印输出周长和面积。
时间: 2023-06-08 12:08:31 浏览: 170
C抽象基类和纯虚成员函数-C教程共3页.pdf.zip
好的,关于您的第一个问题,我理解了,现在我开始回答:
以下是派生类Rectangle和Circle,以及Square的定义:
```
class Shape(object):
pass
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def getCircumference(self):
return 2 * (self.width + self.height)
def getArea(self):
return self.width * self.height
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def getCircumference(self):
return 2 * 3.14 * self.radius
def getArea(self):
return 3.14 * (self.radius ** 2)
class Square(Rectangle):
def __init__(self, side):
Rectangle.__init__(self, side, side)
```
在这里,我们定义了 Shape 的一个空白抽象类,然后定义了 Rectangle 和 Circle 来继承 Shape 类。Square 继承 Rectangle 类。Rectangle 拥有 width 和 height 两个属性,Circle 拥有 radius 属性,Square 继承了 width 和 height 所以没有新属性。getCircumference() 和 getArea() 方法被定义在每个类中,并返回对应形状的周长和面积。
现在我们可以实例化这些类并打印出计算出的周长和面积了:
```
r = Rectangle(2, 3)
print("Rectangle Circumference:", r.getCircumference()) # 2*2 + 2*3 = 10
print("Rectangle Area:", r.getArea()) # 2*3 = 6
c = Circle(4)
print("Circle Circumference:", c.getCircumference()) # 2*3.14*4 = 25.12
print("Circle Area:", c.getArea()) # 3.14*16 = 50.24
s = Square(5)
print("Square Circumference:", s.getCircumference()) # 4*5 = 20
print("Square Area:", s.getArea()) # 5*5 = 25
```
这里我们实例化了一个矩形、一个圆和一个正方形。对于矩形和正方形,我们将宽度和高度设置为2和3和5,而对于圆形,半径设置为4。我们的代码将打印出正确的周长和面积。
阅读全文