车辆管理系统(继承与多态)

Java Hard classes

任务 «车辆管理系统(继承与多态)»

设计一个用于管理车辆 fleet 的类系统。创建一个抽象类 Vehicle,包含字段:id(int)、brand(String)、model(String)、year(int)以及抽象方法 getInfo()。从它派生出类 Car(额外字段:int doors)和 Motorcycle(额外字段:boolean hasSidecar)。实现类 Fleet,它包含一个 Vehicle 列表以及方法:addVehicle(Vehicle v)、removeVehicle(int id)、getVehicleInfo(int id)(返回车辆信息,格式为:Car 为 "id brand model year doors",Motorcycle 为 "id brand model year sidecar",其中 sidecar 输出为 "yes" 或 "no")、listAllVehicles()(输出所有车辆信息,每辆车占一行)。在 main 中从 stdin 读取命令数量 N,然后读取 N 条命令:"ADD id brand model year type [param]","REMOVE id","INFO id","LIST"。对于 ADD 命令,type 可以是 "Car"(此时 param = doors)或 "Motorcycle"(param = "yes"/"no")。保证 id 唯一。输出 INFO 和 LIST 命令的结果。

输入格式

第一行包含整数 N (1 <= N <= 100)。接下来 N 行命令:ADD id brand model year type param, REMOVE id, INFO id, LIST。

输出格式

对于每条INFO命令,输出该车辆的信息。对于LIST命令,按添加顺序输出所有车辆的信息,每辆车一行。如果对于INFO或REMOVE命令未找到指定id的车辆,则输出"Not found"。

示例

示例 1

输入
6 ADD 1 Toyota Camry 2015 Car 4 ADD 2 Harley Davidson 2020 Motorcycle yes INFO 1 LIST REMOVE 1 LIST
输出
1 Toyota Camry 2015 4 1 Toyota Camry 2015 4 2 Harley Davidson 2020 yes 2 Harley Davidson 2020 yes

示例 2

输入
4 ADD 10 BMW X5 2022 Car 5 INFO 10 INFO 20 LIST
输出
10 BMW X5 2022 5 Not found 10 BMW X5 2022 5

示例 3

输入
5 1 2 3 4 5
输出
main.java