设计一个基类来描述火车票,然后由基类火车票类派生出高铁票和硬座票。用户输入火车票类型、位次类型及里程数,程序算出票价并输出,票价计算方法为某一种车票的单位里程票价乘以里程数。
时间: 2024-02-19 14:59:16 浏览: 27
好的,我可以为您解答这个问题。您可以使用 Python 语言来实现这个类的设计。
首先,我们需要定义一个基类 `TrainTicket` 来描述火车票,该类包括票价计算方法和票价属性。代码如下:
```python
class TrainTicket:
def __init__(self, mileage):
self.mileage = mileage
self.price = 0.0
def calculate_price(self, unit_price):
self.price = self.mileage * unit_price
return self.price
```
在上面的代码中,我们定义了一个构造函数 `__init__`,它接收一个参数 `mileage`,表示里程数。我们还定义了一个方法 `calculate_price`,它接收一个参数 `unit_price`,表示单位里程票价。该方法计算票价并将其存储在 `price` 属性中,最后返回票价。
接下来,我们可以从 `TrainTicket` 派生出 `HighSpeedRailwayTicket` 和 `HardSeatTicket` 类。这两个类需要覆盖基类的 `__init__` 方法,以设置不同的单位里程票价。代码如下:
```python
class HighSpeedRailwayTicket(TrainTicket):
def __init__(self, mileage):
super().__init__(mileage)
self.calculate_price(0.45)
class HardSeatTicket(TrainTicket):
def __init__(self, mileage):
super().__init__(mileage)
self.calculate_price(0.1)
```
在上面的代码中,我们定义了 `HighSpeedRailwayTicket` 和 `HardSeatTicket` 两个派生类,它们分别设置了不同的单位里程票价,并在构造函数中调用基类的构造函数和 `calculate_price` 方法。
最后,我们可以在主程序中实例化这些类,并调用它们的 `calculate_price` 方法来计算票价。代码如下:
```python
mileage = int(input("请输入里程数:"))
ticket_type = input("请输入车票类型(高铁/硬座):")
if ticket_type == "高铁":
ticket = HighSpeedRailwayTicket(mileage)
elif ticket_type == "硬座":
ticket = HardSeatTicket(mileage)
else:
print("不支持的车票类型!")
exit()
print("票价为:%.2f元" % ticket.price)
```
在上面的代码中,我们首先从用户输入中获取里程数和车票类型,然后根据车票类型实例化相应的类。最后输出票价。
希望这个回答能够对您有所帮助!
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![whl](https://img-home.csdnimg.cn/images/20210720083646.png)