汽车租赁:
复习点:1.继承 2.抽象类 3.向上转型
要求:实现租车和还车功能,预先设计好能够借用和归还,并计算租金,车分为轿车客车和卡车,分别按照类型,载客量和吨位来确定日租金,并且每一种车的优惠与天数有关,优惠政策也不同,车必须有车牌号,每种车的品牌各不相同,一辆车不能同时借出。
代码实现思路:所有的车继承于抽象类交通类,确定交通类的属性:品牌,租金,车牌号,租借信息,创建get/set方法,状态变更方法并创建抽象方法 显示信息,车辆匹配(重写equals),计算租金。
package BorrowClass;
public abstract class Train {
private String trainNumber;
private String brand;
private double ret;
private boolean can=true;
public void changeCan(){//变更租借状态
if(can){
can=false;
}else{
can=true;
}
}
public boolean getCan(){//返回当前租借状态
return can;
}
public Train(String trainNumber,String brand,double ret){
this.brand=brand;
this.ret=ret;
this.trainNumber=trainNumber;
}
public double getRet(){//返回当前日租金
return ret;
}
public void setRet(int ret){//设置日租金
this.ret=ret;
}
public String getTrainNumber(){//返回车牌号
return trainNumber;
}
public String getBrand(){//返回品牌
return brand;
}
public abstract void show();//显示信息
public abstract boolean equals(Object obj);//重写比较
public abstract double BorrowRet(int day);//计算租金
}
子类根据额外增加属性(类型,座位数,吨位)重写抽象类,并增加相关属性
Bus类:
package BorrowClass;
public class Bus extends Train{
private int desk;
public Bus(String trainNumber, String brand, double ret,int desk) {
super(trainNumber, brand, ret);
this.desk=desk;
}
@Override
public double BorrowRet(int day) {
double ret=this.getRet();
if(day>=150){
ret*=0.6*day;
}else if(day>=30){
ret*=0.7*day;
}else if(day>=7){
ret*=0.8*day;
}else if(day>=3){
ret*=0.9*day;
}
return ret ;
}
public int getDesk(){
return desk;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Bus){
if(((Bus) obj).getBrand().equalsIgnoreCase(this.getBrand())&&
((Bus)obj).getDesk()==(this.getDesk())){
return true;
}
}
return false;
}
@Override
public void show() {
System.out.println("座位数:"+this.desk);
System.out.println("品牌:"+this.getBrand());
Syst