根据多态以及接口,设计一个汽车租赁系统:定义租赁抽象类用于计算租金,轿车类和客车类继承该抽象类并实现租金计算方法。客户类拥有金额属性,可以租用多种车型,并打印租车记录和总费用。
时间: 2024-10-24 14:16:34 浏览: 24
在一个基于多态和接口的汽车租赁系统设计中,首先需要创建以下几个关键组件:
1. **抽象类** `CarRent` 或者 `VehicleLease`: 它是一个抽象类,定义了租赁的基本特征,比如车辆类型、租车开始时间和结束时间等。在这个类中,我们可以定义一个抽象方法 `calculateRent()` 来计算租金。
```java
public abstract class CarRent {
private String vehicleType;
private Date rentalStart;
private Date rentalEnd;
public CarRent(String vehicleType, Date rentalStart, Date rentalEnd) {
this.vehicleType = vehicleType;
this.rentalStart = rentalStart;
this.rentalEnd = rentalEnd;
}
// 抽象方法
public abstract double calculateRent();
// 其他 getter 和 setter 方法
}
```
2. **具体类** `Sedan` 和 `Van`: 这两个类分别代表轿车和客车,它们继承自 `CarRent` 并实现 `calculateRent()` 方法,提供各自的租金计算逻辑。
```java
public class Sedan extends CarRent {
// 轿车特有属性
@Override
public double calculateRent() {
// 轿车的租金计算逻辑
}
}
public class Van extends CarRent {
// 客车特有属性
@Override
public double calculateRent() {
// 客车的租金计算逻辑
}
}
```
3. **客户类** `Customer`: 客户拥有一定的预算,可以租用各种类型的车辆,并跟踪租车记录和总费用。
```java
public class Customer {
private double budget;
private List<CarRent> rentals = new ArrayList<>();
public void rentCar(CarRent car) {
if (car.calculateRent() <= budget) {
rentals.add(car);
budget -= car.calculateRent();
System.out.println("租车记录: " + car.getVehicleType());
} else {
System.out.println("预算不足!");
}
}
// 提供获取租车记录和总费用的方法
public void printRecords() {
// 打印所有租车信息
}
public double getTotalCost() {
return rentals.stream().mapToDouble(Rent::calculateRent).sum();
}
}
```
阅读全文