Java练习汽车租赁的有细节想法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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();这个不可以。

相关文档
最新文档