编写程序并测试,有一个汽车类 Vehicle,类中的私有数据成员为车轮个数 wheels 和车重 weight;小车类 Car 是汽车类 vehicle 派生类,其中包含载客人数 passenger_load,默认 4 人;卡车类 Truck 是汽车类 vehicle 派生类,其中包含载 客人数 passenger_load 和载重量 payload。 提示:编写类时要使用 get 和 set 方法,Vehicle 类定义 display()显示车轮 和重量,Car 和 Truck 中要对 display()进行同名覆盖。
时间: 2024-02-07 08:03:55 浏览: 78
好的,这是一个简单的面向对象编程问题。以下是一个可能的解决方案:
```python
class Vehicle:
def __init__(self, wheels, weight):
self._wheels = wheels
self._weight = weight
def get_wheels(self):
return self._wheels
def set_wheels(self, wheels):
self._wheels = wheels
def get_weight(self):
return self._weight
def set_weight(self, weight):
self._weight = weight
def display(self):
print("Wheels:", self._wheels)
print("Weight:", self._weight)
class Car(Vehicle):
def __init__(self, wheels, weight, passenger_load=4):
super().__init__(wheels, weight)
self._passenger_load = passenger_load
def get_passenger_load(self):
return self._passenger_load
def set_passenger_load(self, passenger_load):
self._passenger_load = passenger_load
def display(self):
super().display()
print("Passenger load:", self._passenger_load)
class Truck(Vehicle):
def __init__(self, wheels, weight, passenger_load, payload):
super().__init__(wheels, weight)
self._passenger_load = passenger_load
self._payload = payload
def get_passenger_load(self):
return self._passenger_load
def set_passenger_load(self, passenger_load):
self._passenger_load = passenger_load
def get_payload(self):
return self._payload
def set_payload(self, payload):
self._payload = payload
def display(self):
super().display()
print("Passenger load:", self._passenger_load)
print("Payload:", self._payload)
```
这个代码定义了一个 `Vehicle` 基类,以及两个派生类 `Car` 和 `Truck`。`Vehicle` 包含车轮个数和车重两个属性,以及一个显示属性的方法,同时使用了 get 和 set 方法来封装私有变量。`Car` 派生类添加了一个默认的载客人数属性,而 `Truck` 派生类添加了载客人数和载重量两个属性。所有派生类都覆盖了 `display()` 方法来显示它们自己的属性。
以下是这个类的一个测试用例:
```python
car = Car(4, 1000)
car.display()
truck = Truck(6, 2000, 2, 5000)
truck.display()
```
输出结果如下:
```
Wheels: 4
Weight: 1000
Passenger load: 4
Wheels: 6
Weight: 2000
Passenger load: 2
Payload: 5000
```
这说明我们的类定义和继承都是正确的。
阅读全文