Java练习汽车租赁的有细节想法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
父类
package cn.bdqn.ysm;
public abstract class MotoVehicle {
String code;
String brand;
public abstract int calRent(int days);
public MotoVehicle(String code,String brand){ this.code=code;
this.brand=brand;
}
}
巴士类
package cn.bdqn.ysm;
public final class Bus extends MotoVehicle{
int seatCount;
/**
* 计算租金
*/
public int calRent(int days){
int calRent=0;
if(seatCount>16){
calRent=1500*days;
}else{
calRent=800*days;
}
return calRent;
}
public Bus(String code,String brand,int seatCount){ super(code,brand);
this.seatCount=seatCount;
}
}
轿车类
package cn.bdqn.ysm;
public final class Car extends MotoVehicle{
String type;
/**
* 计算租金
*/
public int calRent(int days){
int calRent=0;
if(brand.equals("宝马")){
calRent=500*days;
}else{
if(type.equals("GL8")){
calRent=600*days;
}else{
calRent=300*days;
}
}
return calRent;
}
public Car(String code,String brand,String type){ super(code,brand);
this.type=type;
}
}
客车类
package cn.bdqn.ysm;
public class Truck extends MotoVehicle{
int tonnage;
public int calRent(int days){
return tonnage*50*days;
}
public Truck(String code,String brand,int tonnage){ super(code,brand);
this.tonnage=tonnage;
}
}
乘客类
package cn.bdqn.ysm;
public class Customer {
public int calcTotalRent(MotoVehicle moto[],int days){ int sum=0;
for(int i=0;i sum+=moto[i].calRent(days); } return sum; } } Test类 package cn.bdqn.ysm; public class TestRent { public static void main(String[] args) { String name="沈伟"; int days; int totalRent; MotoVehicle motos[]=new MotoVehicle[5]; motos[0] = new Car("京NY28588","宝马","550i"); motos[1] = new Car("京NNN3284","宝马","550i"); motos[2] = new Car("京NT43765","别克","林荫大道"); motos[3] = new Bus("京5643765","金龙",34); motos[4] = new Truck("京GD56577","解放",20); days=5; Customer cus=new Customer(); totalRent=cus.calcTotalRent(motos,days); System.out.println("汽车牌号\t\t\t\t\t汽车品牌"); for(int i=0;i System.out.println(motos[i].code+"\t\t\t\t"+motos[i].brand) ; } System.out.println("客户名:"+name+",租赁天数:"+days+",租赁总费用:"+totalRent+"元。"); } } 1、以上这些代码的特点在与利用了子类中的构造函数的参数,不然每一个非构造函数都要 的一系列的参数(减少了代码量)。这应当属于Java编写是的一个技巧。 2、还有一点是在抽象类不可以实例化,但是抽象类作为引用对象却是可以的! MotoVehicle motos[]=new MotoVehicle[5];这个是可以的。 MotoVehicle motos()=new MotoVehicle();这个不可以。