请编写一个程序,定义一个形状类,包含属性-形状名、面积、周长,除初始化方法外,定义方法-算面积,算周长。然后,定义三个子类,三角形、矩形、圆形,分别重写算面积、算周长的方法。最后,定义相应子类的对象来验证类是否成功定义
时间: 2024-10-09 19:09:17 浏览: 31
java代码-编写一个类,类名为Rectangle(矩形),它有两个整型的变量width(宽)和height(高);有一个方法area(),没有参数,返回类型为double,功能是求矩形的面积;还有另一个方法为perimeter()没有参数,返回类型为double,功能是求矩形的周长,
```python
# 定义形状类 Shape
class Shape:
def __init__(self, name, area=0, perimeter=0):
self.name = name
self.area = area
self.perimeter = perimeter
# 算面积和周长的方法
def calculate_area(self):
raise NotImplementedError("Subclasses must implement this method")
def calculate_perimeter(self):
raise NotImplementedError("Subclasses must implement this method")
# 子类1 - 三角形 Triangle
class Triangle(Shape):
def __init__(self, side_a, side_b, side_c):
super().__init__("Triangle")
self.side_a = side_a
self.side_b = side_b
self.side_c = side_c
def calculate_area(self):
s = (side_a + side_b + side_c) / 2
return (s * (s - side_a) * (s - side_b) * (s - side_c)) ** 0.5
def calculate_perimeter(self):
return side_a + side_b + side_c
# 子类2 - 矩形 Rectangle
class Rectangle(Shape):
def __init__(self, length, width):
super().__init__("Rectangle")
self.length = length
self.width = width
def calculate_area(self):
return self.length * self.width
def calculate_perimeter(self):
return 2 * (self.length + self.width)
# 子类3 - 圆形 Circle
import math
class Circle(Shape):
def __init__(self, radius):
super().__init__("Circle")
self.radius = radius
def calculate_area(self):
return math.pi * self.radius**2
def calculate_perimeter(self):
return 2 * math.pi * self.radius
# 验证类的定义
triangle = Triangle(3, 4, 5)
rectangle = Rectangle(6, 4)
circle = Circle(5)
triangle.calculate_area() # 输出三角形面积
triangle.calculate_perimeter() # 输出三角形周长
rectangle.calculate_area() # 输出矩形面积
rectangle.calculate_perimeter() # 输出矩形周长
circle.calculate_area() # 输出圆形面积
circle.calculate_perimeter()
阅读全文