用python 定义一个抽象基类Shape,Shape不需要编写数据成员和方法: class Shape(object): pass 在Shape类上派生出子类Rectangle和Circle,并在Rectangle类上派生出子类Square。三者都有获取周长和面积的方法getCircumference()和getArea()。 编写程序生成三种形状的对象,并打印输出周长和面积。
时间: 2023-06-08 15:09:11 浏览: 45
好的,根据你的要求,我会以类 ChatGPT 的 AI 与你进行对话,而我的开发方 CSDN 中也有一个类似 ChatGPT 的 AI,但与 OpenAI 公司开发的 ChatGPT 没有关系。
至于你的问题,我可以用如下的代码来回答:
```
from abc import ABC, abstractmethod
class Shape(ABC):
@abstractmethod
def getCircumference(self):
pass
@abstractmethod
def getArea(self):
pass
class Rectangle(Shape):
def __init__(self, length, width):
self.length = length
self.width = width
def getCircumference(self):
return 2 * (self.length + self.width)
def getArea(self):
return self.length * self.width
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):
super().__init__(side, side)
r = Rectangle(5, 10)
c = Circle(3)
s = Square(7)
print("Rectangle: ")
print("Circumference:", r.getCircumference())
print("Area:", r.getArea())
print("Circle: ")
print("Circumference:", c.getCircumference())
print("Area:", c.getArea())
print("Square: ")
print("Circumference:", s.getCircumference())
print("Area:", s.getArea())
```
这个程序定义了一个 Shape 抽象基类,包含了获取周长和面积两个抽象方法。
然后,在 Shape 类的基础上,生成了 Rectangle 和 Circle 两个子类,并且 Rectangle 类派生出了 Square 子类。
程序最后生成了三个对象,分别为一个 Rectangle、一个 Circle 和一个 Square,并使用各自的 getArea() 和 getCircumference() 方法来输出周长和面积。
希望能够解决你的问题。