该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

1、使用extends关键字编写各子类;

2.按照要求为子类添加信息的成员变量与成员方法;

3.为父类和子类添加构造方法;

4.编写各子类的测试程序;

5.编写一个打印发票(PrintReceipt)的接口,让类引用此接口,实现其功能。

6.改写测试程序,定义一个父类类型的数组,数组的成员变量分别为各子类的实例对象,请计算各种车的租金并打印输出相关信息。

提示:

Vehicle父类:包含:number(车牌号)、type(车类型)、value(购车价格)、rentPrice(租车单价)、rent(租金)等数据成员;

Truck子类:还包含:tonnage(货车的吨位数)、rentKilometers(租车里程数)数据成员;

Bus子类:还包含:seats(客车坐位数)rentHours(租车小时)等数据成员;

Car子类:还包含:rentDays(租车天数);

以上数据成员定义为protected访问权限。

每个类都要有构造方法用来初始其数据成员。

此程序中重点是calcuRent()计算租金方法,不同子类其计算租金的方法不同:Truck子类按里程数计算租金,吨位小于10吨的,租金=租车单价*租车里程数,吨位大于10吨的,租金=租车单价*租车里程数*1.5;Bus子类按租车小时计算租金,租金=租车单价*租车小时;Car子类按租车天数计算租金,租金=租车单价*租车天数。

程序如下,有错误,请各位大神指点,给小弟一篇完整无错误的程序。

public class Vehicle {protected String number;//车牌

protected String type;//车类型

protected double value;//购车价格

protected double rentPrice;//租车单价

protected double rent;//租金

public Vehicle(String number,String type,double value,double rentPrice,double rent)//设置车牌号、类型、价格、租车单价、租金

{

this.number=number;

this.type=type;

this.value=value;

this.rentPrice=rentPrice;

this.rent=rent;

}

class Truck extends Vehicle{protected String tonnage;protected String rentKilometers;public Truck(String number,String type,double value,double rentPrice,double rent,String tonnage,String rentKilometers){super( number, type, value, rentPrice, rent);this.tonnage=tonnage;this.rentKilometers=rentKilometers;}}public class Bus extends Vehicle{protected String seats;protected String rentHours;public Bus(String number,String type,double value,double rentPrice,double rent,String seats,String rentHours){super(number, type, value, rentPrice, rent);this.seats=seats;this.rentHours=rentHours;}}void setRentKilometers(double rentKilometers)//设置租车里程数{this.rentKilometers=rentKilometers;}

double getRentKilometers()//返回租车里程数

{return rentKilometers;}

abstract void calcuRent();//计算租金

double getRent()//返回租金

{return rent;}

void printBasicInfo()//返回车的基本信息

{

System.out.println("车牌:"+number+"\t车类型:"+type+"\t车价:"+value+"万元"+"\t租车单价:"+rentPrice);

}

public void printOtherInfo()//返回租车的信息

{ System.out.print("租车里程数:"+rentKilometers);

System.out.print("\t租车单价:"+rentPrice);

System.out.println("\t租金:"+rent);

System.out.println();

}

}

/*****************************************************************************/

class Truck extends Vehicle

{

private double tonnage;//货车的吨位数

public Truck(String number,String type,double value,double rentPrice,double tonnage)

{

super(number,type,value,rentPrice,tonnage);//调用父类的构造器方法

this.tonnage=tonnage;//对自己的成员变量进行初始化

}

public double getTonnage()

{

return tonnage;

}

public void calcuRent()//计算租金

{ if(tonnage<10) rent=rentPrice*rentKilometers;

else rent=rentPrice*rentKilometers*1.5;

}

public void printOtherInfo()//返回租车的信息

{

System.out.print("货车租吨位:"+tonnage);

System.out.print("\t租车单价:"+rentPrice);

System.out.println("\t租金:"+rent);

System.out.println();

}

}

/*****************************************************************************/

class Bus extends Vehicle

{

int seats;//客车坐位数

int rentHours;//租车小时

public Bus(String number,String type,double value,double rentPrice,int seats)

{ super(number,type,value,rentPrice,seats);//调用父类的构造器方法

this.seats=seats;

}

public void setRentHours(int rentHours)

{ this.rentHours=rentHours;

}

public int getRentHours()

{ return rentHours;

}

public int getSeats()

{ return seats;

}

public void calcuRent()/*覆盖父类的计算租金的方法,出租单价为每天出租价格*/

{ rentPrice=rentPrice*rentHours;

}

public void printOtherInfo()//返回租车的信息

{

System.out.print("客车租车时间:"+rentHours);

System.out.print("\t租车单价:"+rentPrice);

System.out.println("\t租金:"+rent);

System.out.println();

}

}

/*****************************************************************************/

class Car extends Vehicle

{

private int rentDays;

public Car(String number,String type,double value,double rentPrice)

{ super(number,type,value,rentPrice); //调用父类的构造器方法

}

public void setRentDays(int rentDays)

{ this.rentDays=rentDays;

}

public int getRentDays()

{ return rentDays;

}

public void calcuRent()/*覆盖父类的计算租金的方法,出租单价为每天出租价格*/

{ rentPrice=rentPrice* rentDays;

}

public void printOtherInfo()//返回租车的信息

{

System.out.print("小车租车天数:"+rentDays);

System.out.print("\t租车单价:"+rentPrice);

System.out.println("\t租金:"+rent);

System.out.println();

}

}

/*****************************************************************************/

class TestCar

{

public static void main(String args[])

{

Truck truck1=new Truck("粤B 30234","小车",16,200,15.0);

Bus bus1=new Bus("粤B 30234","小车",16,200,50);

Car car1=new Car("粤B 30234","小车",16,200);

truck1.printBasicInfo();

bus1.printBasicInfo();

car1.printBasicInfo();

}

}

class Vehicle {protected String number;//车牌

protected String type;//车类型

protected double value;//购车价格

protected double rentPrice;//租车单价

protected double rent;//租金

public Vehicle(String number,String type,double value,double rentPrice,double rent)//设置车牌号、类型、价格、租车单价、租金

{

this.number=number;

this.type=type;

this.value=value;

this.rentPrice=rentPrice;

this.rent=rent;

}

class Truck extends Vehicle{protected String tonnage;protected String rentKilometers;public Truck(String number,String type,double value,double rentPrice,double rent,String tonnage,String rentKilometers){super( number, type, value, rentPrice, rent);this.tonnage=tonnage;this.rentKilometers=rentKilometers;}}public class Bus extends Vehicle{protected String seats;protected String rentHours;public Bus(String seats,String rentHours){this.seats=seats;this.rentHours=rentHours;}}

void setRentKilometers(double rentKilometers)//设置租车里程数

{ this.rentKilometers=rentKilometers;}

public double getRentKilometers()//返回租车里程数

{return rentKilometers;}

void calcuRent();//计算租金

public double getRent()//返回租金

{return rent;}

public void printBasicInfo()//返回车的基本信息

{

System.out.println("车牌:"+number+"\t车类型:"+type+"\t车价:"+value+"万元"+"\t租车单价:"+rentPrice);

}

}

java编写一个汽车出租管理程序_初学者,写了一个汽车出租管理程序,请大神解决错误。...相关推荐

  1. 我的世界java版mac切视角_我的世界中怎么切换视角 大神手把手教学

    导读 本篇教程将通过图文的形式一步步教你在我的世界中怎么在第一人称视角和第三人称视角间切换.在我的世界中,你会以第一人称视角来开始一个新的世界. 我的世界中的视角 在我的世界中有3种不同的视角,让我们 ...

  2. java 实验4 字体对话框_文字字体设计窗体 实验!求大神

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExpl ...

  3. 自己写的快递查询软,附源码,用E写着玩玩的,请大神指点

    很多人认为E上不了台面,其实语言没有好坏,只要用好了,都可以做很多事情 这个是自己写的快递查询的 新手一枚,纯属兴趣爱好.欢迎指点 用的是www.kuaidi100.com的数据 抓包,对post数据 ...

  4. 光功率 博科交换机_华为交换机查看光功率的方法请大神指教

    brx丶老班班 回答数:96342  |  被采纳数:112 2016-11-21 08:48:14 使用命令display interface interface-type interface-nu ...

  5. 数独求解算法_我如何回到一个老问题,终于写了一个数独求解算法

    数独求解算法 by Ali Spittel 通过Ali Spittel 我如何回到一个老问题,终于写了一个数独求解算法 (How I came back to an old problem and f ...

  6. 给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出(算法导论第三版第十章10.4-5)

    给定一个n节点二叉树,写出一个O(n)时间的非递归的过程,将该树每个结点的关键字输出.要求除该树本树的存储空间外只能使用固定量的额外存储空间,且过程中不得修改该树,即使是暂时的修改也不允许. (算法导 ...

  7. 有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,

    题目:有一个小白程序员,写了一个只能对5个数字进行排序的函数,现在有25个不重复的数字,请问小白同学最少调用几次该函数,可以找出其中最大的三个数? A.5 B.6 C.7 D.8 答案:C 解析:第一 ...

  8. 理解C#语言中的类型转换----初学者的理解,请大神指教

    一下都是在视频教学中学到后的理解,如果说错了请大神指教 C#语言中的类型转换,就是将某个数据要转换成另一个类型的数据. c#语言中的数据类型主要有: char类型(字符类型): string类型(字符 ...

  9. realplayer java,不同浏览器调用realplayer插件在线播放视频的有关问题,请大神们进来看看...

    不同浏览器调用realplayer插件在线播放视频的问题,请大神们进来看看 上面代码是调用realplayer实现在线播放的,在安装realplayer后IE.火狐.chrome都是可以播放的,但是在 ...

  10. java 控制台刷屏 dll_Java刷屏问题,下面是我编的代码,请大神帮忙解决下,谢谢...

    importjava.awt.*;importjavax.swing.*;importjava.awt.event.*;publicclassjiemianextendsJFrame{JButtonz ...

最新文章

  1. VTK:可视化算法之CreateBFont
  2. 某网session覆盖导致重置密码漏洞
  3. 二进制_简学:二进制数制的应用
  4. java分页查询_面试官:数据量很大,分页查询很慢,有什么优化方案?
  5. 常见的清除浮动的五种解决办法
  6. 知识图谱入门2-2:用户输入->知识库的查询语句
  7. 关于JVM类加载的几个问题
  8. Ubuntu18.04 evo安装
  9. 时间和日期的JS库Day.js入门教程
  10. php 日之泪,php泪中一帮助
  11. 键帽图纸_如何更换机械键盘的键帽(以便它可以永远存在)
  12. 第073封“情书”:小目标20181022Using UV Layout ForGeometryPacking<Entagma>Houdini 2018
  13. 三菱Q系列做modbusTCP服务器,汇川H3u与三菱Q/L系列PLC MODBUS TCP通信说明
  14. SuperMap云许可配置
  15. 金融系列-会计基础知识
  16. 完整的机器学习_加州房价预测
  17. 2023考研数学冲刺模拟卷资源———以及模拟卷难度评估
  18. 微信小程序开发-微信支付之免密支付(自动扣费)一 小程序+java接口
  19. 2020604 Java基础复习
  20. 2014阿里校园招聘软件工程师笔试题(9.22武汉站)

热门文章

  1. 【图像分割】基于matalb灰狼算法最小交叉熵多阈值图像分割【含Matlab源码 903期】
  2. 【背包问题】基于matlab遗传算法求解背包问题【含Matlab源码 578期】
  3. amd核芯显卡控制面板自定义分辨率_电脑显示器分辨率超频教程:1080P超2K分辨率的方法...
  4. k8s apollo_AI增强的Apollo 16素材让您以4K登上月球
  5. fit文件用python画瀑布图
  6. 李宏毅机器学习day2
  7. mysql 程序无法连接_程序无法连接到服务器不知道怎么解决
  8. jqgrid本地数据例子_FMS财务系统:日常数据核对与处理
  9. vscode代码运行时间工具_今天,VS Code 五岁了。
  10. Cisco NTP配置