写一个程序,定义抽象基类Shape,由它派生出3个派生类:circle圆形 rectangle矩形
时间: 2024-02-19 20:58:28 浏览: 89
好的,很高兴为您解答这个问题。以下是一个使用Python语言实现的示例程序:
```python
from abc import ABC, abstractmethod
import math
class Shape(ABC):
@abstractmethod
def area(self):
pass
@abstractmethod
def perimeter(self):
pass
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def area(self):
return math.pi * self.radius ** 2
def perimeter(self):
return 2 * math.pi * self.radius
class Rectangle(Shape):
def __init__(self, height, width):
self.height = height
self.width = width
def area(self):
return self.height * self.width
def perimeter(self):
return 2 * (self.height + self.width)
# Example usage
circle = Circle(5)
print(circle.area()) # Output: 78.53981633974483
print(circle.perimeter()) # Output: 31.41592653589793
rectangle = Rectangle(4, 6)
print(rectangle.area()) # Output: 24
print(rectangle.perimeter()) # Output: 20
```
在这个示例程序中,我们首先定义了一个抽象基类Shape,它包含两个抽象方法area和perimeter。接着,我们定义了两个派生类Circle和Rectangle,它们都继承自Shape基类,并实现了area和perimeter方法。Circle类接收一个半径参数,并使用math库来计算面积和周长。Rectangle类接收一个高度和宽度参数,并使用简单的公式来计算面积和周长。
最后,我们通过创建Circle和Rectangle类的实例,并调用它们的area和perimeter方法来测试代码的正确性。