python编程实现如下功能: 1.定义一个抽象类 Shape,在抽象类 Shape 中定义求面积getArea()和周长getPerimeter()的抽象方法。 2.分别定义继承抽象类Shape的3个子类即 Triangle、Rectangle和Circle,在这3个子类中重写 Shape 中的方法getArea()和getPerimeter()。3.创建类 Triangle、Rectangle、Circle 的对象,对3个类中的方法进行调用测试。
时间: 2024-02-22 07:55:50 浏览: 184
python继承和抽象类的实现方法
好的,以下是实现要求的 Python 代码:
```python
from abc import ABC, abstractmethod
import math
class Shape(ABC):
@abstractmethod
def getArea(self):
pass
@abstractmethod
def getPerimeter(self):
pass
class Triangle(Shape):
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c
def getArea(self):
p = (self.a + self.b + self.c) / 2
return math.sqrt(p * (p - self.a) * (p - self.b) * (p - self.c))
def getPerimeter(self):
return self.a + self.b + self.c
class Rectangle(Shape):
def __init__(self, width, height):
self.width = width
self.height = height
def getArea(self):
return self.width * self.height
def getPerimeter(self):
return 2 * (self.width + self.height)
class Circle(Shape):
def __init__(self, radius):
self.radius = radius
def getArea(self):
return math.pi * self.radius ** 2
def getPerimeter(self):
return 2 * math.pi * self.radius
# 测试代码
t = Triangle(3, 4, 5)
print("三角形的面积为:", t.getArea())
print("三角形的周长为:", t.getPerimeter())
r = Rectangle(4, 5)
print("矩形的面积为:", r.getArea())
print("矩形的周长为:", r.getPerimeter())
c = Circle(2)
print("圆的面积为:", c.getArea())
print("圆的周长为:", c.getPerimeter())
```
输出结果为:
```
三角形的面积为: 6.0
三角形的周长为: 12
矩形的面积为: 20
矩形的周长为: 18
圆的面积为: 12.566370614359172
圆的周长为: 12.566370614359172
```
可以看到,代码成功实现了抽象类 Shape 和子类 Triangle、Rectangle、Circle 的定义,以及对方法进行重写和测试。
阅读全文