定义 2 个接口

载人接口 IMannedCar.java

public interface IMannedCar {

int mannedNumber();

}

载货接口 ICarryFreight.java

public interface ICarryFreight {

int carryFreightNumber();

}

定义抽线父类 Car.java,并定义两个抽象方法 name(), rental().

public abstract class Car {

public abstract String name();

public abstract int rental();

}

定义三个抽象类,继承 Car.java,并根据不同的需求实现不同的接口

PersonCar,载人汽车抽象类

public abstract class PersonCar extends Car implements IMannedCar {

}

CarryCar,载货汽车抽象类

public abstract class PersonCar extends Car implements IMannedCar {

}

PickupTruck,皮卡抽象类

public abstract class PickupTruck extends Car implements IMannedCar,ICarryFreight {

}

具体不同的汽车,实现不同的类

Audi.java,奥迪A4,载人汽车实现类

public class Audi extends PersonCar {

@Override

public int mannedNumber() {

return 4;

}

@Override

public String name() {

return "奥迪 A4";

}

@Override

public int rental() {

return 500;

}

@Override

public String toString() {

return name() + " " + rental() + "元/天 载人:" + mannedNumber();

}

}

Mazada6.java,马自达6,载人汽车实现类

public class Mazada6 extends PersonCar {

@Override

public int mannedNumber() {

return 4;

}

@Override

public String name() {

return "马自达6";

}

@Override

public int rental() {

return 400;

}

@Override

public String toString() {

return name() + " " + rental() + "元/天 载人:" + mannedNumber();

}

}

Xue6.java,雪6,皮卡实现类

public class Xue6 extends PickupTruck {

@Override

public int mannedNumber() {

return 4;

}

@Override

public int carryFreightNumber() {

return 2;

}

@Override

public String name() {

return "皮卡雪6";

}

@Override

public int rental() {

return 450;

}

@Override

public String toString() {

return name() + " " + rental() + "元/天 载人:" + mannedNumber() + " 载货:" + carryFreightNumber();

}

}

YiWeiKe.java,依维柯,载货汽车实现类

public class YiWeiKe extends CarryCar {

@Override

public int carryFreightNumber() {

return 20;

}

@Override

public String name() {

return "依维柯";

}

@Override

public int rental() {

return 1000;

}

@Override

public String toString() {

return name() + " " + rental() + "元/天 载货:" + carryFreightNumber();

}

}

SongHuaJiang.java,松花江,载货汽车实现类

public class SongHuaJiang extends CarryCar {

@Override

public int carryFreightNumber() {

return 4;

}

@Override

public String name() {

return "松花江";

}

@Override

public int rental() {

return 400;

}

@Override

public String toString() {

return name() + " " + rental() + "元/天 载货:" + carryFreightNumber();

}

}

JinLong.java,金龙,载人汽车实现类

public class JinLong extends PersonCar {

@Override

public int mannedNumber() {

return 20;

}

@Override

public String name() {

return "金龙";

}

@Override

public int rental() {

return 800;

}

@Override

public String toString() {

return name() + " " + rental() + "元/天 载人:" + mannedNumber();

}

}

PiCar.java,皮卡,皮卡实现类

public class PiCar extends PickupTruck {

@Override

public int mannedNumber() {

return 4;

}

@Override

public int carryFreightNumber() {

return 5;

}

@Override

public String name() {

return "皮卡";

}

@Override

public int rental() {

return 600;

}

@Override

public String toString() {

return name() + " " + rental() + "元/天 载人:" + mannedNumber()+" 载货:" + carryFreightNumber();

}

}

租车系统 RentCar

public class RentCar {

private List cars;

private List rentCars;

public void rent() {

rentCars = new ArrayList<>();

System.out.println("您可租车的类型及其价目表:");

showRentCarList();

}

private void showRentCarList() {

cars = new ArrayList<>();

Car audi = new Audi();

cars.add(audi);

Car yiweike = new YiWeiKe();

Car piCar = new PiCar();

Car songhuajiang = new SongHuaJiang();

Car mazada6 = new Mazada6();

Car xue6 = new Xue6();

Car jinlong = new JinLong();

cars.add(piCar);

cars.add(yiweike);

cars.add(songhuajiang);

cars.add(mazada6);

cars.add(xue6);

cars.add(jinlong);

if (cars != null && cars.size() > 0) {

System.out.println("序号 汽车名称 租金 容量");

for (int i = 0; i < cars.size(); i++) {

System.out.println(i + 1 + " " + cars.get(i).toString());

}

int carsNumber = 0;

boolean isCardNumber = false;

System.out.println("请输入您要租赁车辆的数量:");

while (!isCardNumber) {

try {

carsNumber = inNumber();

if (carsNumber <= 0) {

isCardNumber = false;

continue;

}

isCardNumber = true;

} catch (ParseErrorException e) {

isCardNumber = false;

System.out.println("请输入您要租赁车辆的数量:");

}

}

for (int j = 0; j < carsNumber; j++) {

System.out.println("请输入第" + (j + 1) + "辆车的序号:");

boolean isSerial = false;

while (!isSerial) {

int serial = 0;

try {

serial = inNumber();

} catch (ParseErrorException e) {

isSerial = false;

System.out.println("请正确的输入车辆需要");

continue;

}

if (serial <= 0 serial > cars.size()) {

System.out.println("请正确的输入车辆需要");

isSerial = false;

continue;

}

rentCars.add(cars.get(serial - 1));

isSerial = true;

}

}

statisticsCars();

} else {

System.out.println("暂时没有可供租赁的车辆!");

return;

}

}

public int inNumber() throws ParseErrorException {

Scanner scanner1 = new Scanner(System.in);

try {

String trim = scanner1.next().trim();

return Integer.parseInt(trim);

} catch (Exception e) {

throw new ParseErrorException(e.getMessage());

}

}

private void statisticsCars() {

List carryName = new ArrayList<>();

List personName = new ArrayList<>();

int manned = 0;

int carryFreight = 0;

int rently = 0;

if (rentCars != null && rentCars.size() > 0) {

for (int i = 0; i < rentCars.size(); i++) {

Car car = rentCars.get(i);

rently += car.rental();

if (car instanceof PersonCar) {

manned += ((IMannedCar) car).mannedNumber();

personName.add(car);

} else if (car instanceof CarryCar) {

carryFreight += ((ICarryFreight) car).carryFreightNumber();

carryName.add(car);

} else {

manned += ((IMannedCar) car).mannedNumber();

carryFreight += ((ICarryFreight) car).carryFreightNumber();

carryName.add(car);

personName.add(car);

}

}

System.out.println("您租赁了:" + rentCars.size() + "辆车,总金额:" + rently);

if (carryFreight != 0) {

System.out.println("总载货量:" + carryFreight);

System.out.print("车辆类型为:");

for (Car car : carryName) {

System.out.print(car.name() + " ");

}

System.out.println();

}

if (manned != 0) {

System.out.println("总载人量:" + manned);

System.out.print("车辆类型为:");

for (Car car : personName) {

System.out.print(car.name() + " ");

}

System.out.println();

}

} else {

System.out.println("租赁信息有误");

}

}

}

答答租车系统入口:

public class DadaRentCar {

public static void main(String[] args) {

System.out.println("欢迎使用答答租车系统:");

System.out.println("您是否要租车:1-是,0-否");

boolean isRent = true;

while (isRent) {

Scanner scanner = new Scanner(System.in);

String trim = scanner.next().trim();

if (trim.equals("1")) {

RentCar rentCar = new RentCar();

rentCar.rent();

} else if (trim.equals("0")) {

isRent = false;

System.out.println("再见!");

} else {

System.out.println("请输入正确的指令");

}

}

}

}

java中面向对象租车问题_答答租车系统-Java面向对象的学习相关推荐

  1. java中接口什么时候用_我什么时候应该在java中使用接口?

    在Java中精确使用接口的一个很好的例子将是理想的,适用于任何特定的规则. 看看丹以前所有的问题,他似乎只是逐字逐句地张贴家庭作业/考试问题. 令人惊讶的是,这些不是考试题或其他-今天才找到这个网站, ...

  2. java中final是啥意思_(转)深入理解Java中的final关键字

    Java中的final关键字非常重要,它可以应用于类.方法以及变量.这篇文章中我将带你看看什么是final关键字?将变量,方法和类声明为final代表了什么?使用final的好处是什么?最后也有一些使 ...

  3. java中appletviewer是什么意思_自动生成供AppletViewer运行Java Applet的HTML文件

    这几天开始自学Java,搭建Eclipse作为开发环境,发现实在太智能了,貌似对学习无益.于是搜了下,另外搭建了EditPlus上的简易Java开发环境,确实比较适合学习,不足之处是没法配置比较方便的 ...

  4. java中b的平方表示_第七届蓝桥杯Java B——四平方和

    四平方和定理,又称为拉格朗日定理: 每个正整数都可以表示为至多4个正整数的平方和. 如果把0包括进去,就正好可以表示为4个数的平方和. 比如: 5 = 0^2 + 0^2 + 1^2 + 2^2 7 ...

  5. java吃货联盟app讲解_吃货联盟订餐系统——JAVA实现

    package com.chihuo; import java.util.Scanner; public class OrderingMgr { public static void main(Str ...

  6. [转载] java中对数组进行排序_如何在Java中对数组排序

    参考链接: Java中main()的有效变体 java中对数组进行排序 Java Array is like a container that can hold a fixed number of t ...

  7. java中对数组进行排序_如何在Java中对数组排序

    java中对数组进行排序 Java Array is like a container that can hold a fixed number of the same type of items, ...

  8. javaweb JAVA JSP幼儿园事务管理系统jsp幼儿早教中心网站系统 Java幼儿园网站源码

    javaweb JAVA JSP幼儿园事务管理系统jsp幼儿早教中心网站系统 Java幼儿园网站源码 常见的Javaweb题材有 理财系统,就业管理系统,汽车租赁,简易网盘,疫情数据查看,在线招标房, ...

  9. 如下哪个是Java中的合法自定义标识符_吉大13春《面向对象程序设计》在线作业答案...

    吉大13春<面向对象程序设计>在线作业答案 2013-03-21 01:03:14 259 有学员问关于吉大13春<面向对象程序设计>在线作业答案的题目的参考答案和解析,具体如 ...

  10. java中super(aa bb cc)_面向对象程序设计(Java)答案

    [单选题]下列哪个类声明是正确的( ) [单选题]Java中,在如下所示的Test类中,共有( )个构造方法. public class Test{ private int x; public Tes ...

最新文章

  1. 【嵌入式开发】ARM 代码搬移 ( ARM 启动流程 | 代码搬移 起点 终点 | 链接地址 | 汇编代码 )
  2. 微软官方Windows Server 2008实战攻略系列
  3. mybatis-plus代码生成器简易使用
  4. OpenCV学习笔记三-Mat数据结构
  5. BUAA_OO_第二单元作业总结
  6. saveOrUpdate的使用
  7. java chatat delete,StringBuffer deleteCharAt(int index)
  8. iOS 审核之 Performance - 2.5.2 被拒 dlopen(), dlsym(), respondsToSelector:, performSelector
  9. 谷歌大牛Jeff Dean撰文:深度学习研究的黄金十年
  10. 还原html默认打开方式,Win7旗舰版64位系统下如何还原文件默认打开方式
  11. 学生宿舍管理系统(前端部分)
  12. 笔记本电脑不显示WIFI列表无法连接到网络的解决办法
  13. html——简单文章发布html页面及富文本编辑器wangEditor的使用
  14. 技术贴 | 视频清晰度由什么决定
  15. VideoStream流媒体(VOD视频点播)系统平台
  16. 干货面试教程!java识别图片验证码
  17. Python群发短信
  18. 蚂蚁金服6面,成功唬住面试官拿了36K
  19. 未知参数休哈特matlab,一种确定某类工作的人的极限工作时间的方法
  20. [附源码]java毕业设计大学城二手书交易网站

热门文章

  1. 华为鸿蒙还会不会推出,华为如果把鸿蒙独立出来,让小米、魅族和蓝绿厂参股进来,会不会超越安卓?...
  2. python collections(容器)模块
  3. 奇妙华为3c手机, 出现安装未成功问题。
  4. NeurIPS 2021 Spotlight | PCAN: 高效时序建模, 提升多目标追踪与分割性能
  5. 超越 EfficientNet与MobileNetV3,NeurIPS 2020 微软NAS方向最新研究
  6. 国防科大提出基于可变形三维卷积(D3Dnet)的视频超分辨,代码已开源
  7. 黑白照片修复亦可「如假包换」,华人学者提出实例感知着色新方法
  8. 近期机器学习竞赛汇总~总奖池超三百万人民币!
  9. YOLACT++:目前最热门的实时实例分割开源库
  10. 不要错过!MICCAI 2019 所有论文完整下载