定义一个继承与派生关系的类体系,在派生类中访问基类成员。先定义一个点类,包含x,y坐标数据成员,显示函数和计算面积的函数成员;以点为基类派生一个圆类,增加表示半径的数据成员,重载显示和计算面积的函数;定义一个线段类,以两个点类对象作数据成员,定义显示、求面积及长度函数,线段类采用聚合方式,因为有两个端点,不能用派生。
时间: 2024-03-13 22:42:55 浏览: 20
好的,我可以为您演示如何定义这个类体系。
首先,我们定义基类 Point:
```python
class Point:
def __init__(self, x, y):
self.x = x
self.y = y
def display(self):
print("({},{})".format(self.x, self.y))
def area(self):
return 0
```
接下来,我们以 Point 为基类派生一个 Circle 类:
```python
class Circle(Point):
def __init__(self, x, y, r):
super().__init__(x, y)
self.r = r
def display(self):
print("圆心坐标为:({},{}),半径为:{}".format(self.x, self.y, self.r))
def area(self):
return 3.14 * self.r * self.r
```
最后,我们定义一个 Line 类,它使用聚合方式包含两个 Point 对象:
```python
class Line:
def __init__(self, p1, p2):
self.p1 = p1
self.p2 = p2
def display(self):
print("线段的两个端点分别为:")
self.p1.display()
self.p2.display()
def area(self):
return 0
def length(self):
return ((self.p1.x - self.p2.x) ** 2 + (self.p1.y - self.p2.y) ** 2) ** 0.5
```
现在,我们可以创建对象并使用它们了:
```python
p = Point(0, 0)
p.display()
print("点的面积为:", p.area())
c = Circle(1, 1, 2)
c.display()
print("圆的面积为:", c.area())
p1 = Point(0, 0)
p2 = Point(3, 4)
l = Line(p1, p2)
l.display()
print("线段的长度为:", l.length())
```