java继承数组实例_【Java】理解封装、继承、多态和对象数组的综合实例(简易的租车系统,附代码)...
一、Drive.java(汽车类 - 父类)
package Z_CarManger;
import java.io.ObjectInputStream.GetField;
public abstract class Drive {
private String brand; // 品牌 brand
private String id; // 车牌号
private int rent;// 日租金 rent
// =================================== 【设置构造方法】
public Drive() {}
public Drive(String brand,String id,int rent)
{
this.brand=brand;
this.id=id;
this.rent=rent;
}
// =================================== 【设置属性】
public void setBrand(String brand) {
this.brand=brand; // 品牌 brand
}
public String getBrand() {
return this.brand; // 品牌 brand
}
public void setId(String id)
{
this.id=id; // 车牌号
}
public String getId() {
return this.id; // 车牌号
}
public void setRent(int rent) {
this.rent=rent;// 日租金 rent
}
public int getRent() {
return rent;// 日租金 rent
}
// 计算租金,传入天数,计算租金。 (抽象方法,要声明抽像类)
public abstract float Money(int days);
}
二、Car.java(轿车类 - 子类)
package Z_CarManger;
//===== 【轿车类】
public class Car extends Drive{
private String type;
// =================================== 【设置构造方法】
public Car() {}
public Car(String brand,String id,int rent, String type)
{
super(brand,id,rent); // 引用父类的构造方法
this.type=type;
}
// =================================== 【设置属性】
public void setType(String type) {
this.type=type;
}
public String getType()
{
return this.type;
}
// 计算租金,传入天数,计算租金。 (抽象方法,要声明抽像类)
public float Money(int days) {
float price=this.getRent();
if(days>7)
{
price=price*0.9f;
}
if(days>30)
{
price=price*0.8f;
}
if(days>150)
{
price=price*0.7f;
}
return price;
}
}
三、Bus.java(客车类 - 子类)
package Z_CarManger;
import org.omg.CORBA.PRIVATE_MEMBER;
// ===== 【客车类】
public class Bus extends Drive{
private int seat;
// =================================== 【设置构造方法】
public Bus() {};
public Bus(String brand,String id,int rent,int seat) {
super(brand,id,rent); // 引用父类的构造方法
this.seat=seat;
}
// -------- 【设置属性 - 座位】
public void setSeat(int seat)
{
this.seat=seat;
}
public int getSeat()
{
return this.seat;
}
// 计算租金,传入天数,计算租金。 (抽象方法,要声明抽像类)
public float Money(int days) {
float price=this.getRent();
if(days>3)
{
price=price*0.9f;
}
if(days>7)
{
price=price*0.8f;
}
if(days>30)
{
price=price*0.7f;
}
if(days>150)
{
price=price*0.6f;
}
return price;
}
}
四、Data1.java(数据类 - 存放需要比对和处理的对象数组)
package Z_CarManger;
public class Data1 {
Drive[] m_car=new Drive[8]; // 通过父类创建对象数组
public int init(String brand,String id,int days,String type,int seat)
{
//System.out.println("品牌:"+brand+" 牌照号:"+id+" 天数:" +days+" 车型:"+type +" 座位:"+seat);
// 【轿车】:品牌、车辆号、日租金、型号
m_car[0]=new Car("宝马","京N28588",800,"X6"); // 对应Car类的构造函数
m_car[1]=new Car("宝马","京CNY3284",600,"550i"); // 对应Car类的构造函数
m_car[2]=new Car("别克","京NT37465",300,"林荫大道"); // 对应Car类的构造函数
m_car[3]=new Car("别克","京NT96968",600,"GL8"); // 对应Car类的构造函数
// 【客车】:品牌、车辆号、日租金、型号
m_car[4]=new Bus("金杯","京6566754",800,16); // 对应Bus类的构造函数
m_car[5]=new Bus("金龙","京8696997",800,16); // 对应Bus类的构造函数
m_car[6]=new Bus("金杯","京9696996",1500,34); // 对应Bus类的构造函数
m_car[7]=new Bus("金龙","京8696998",1500,34); // 对应Bus类的构造函数
//String brand="宝马";
//String id="京N28588";
//int days=3;
//String type="X6";
int money=0;
// ====================================== 【正确方法,遍历对象数组】
Drive m_meney=null; // 创建一个对象变量
for(Drive moto:m_car) // 用父类Drive建立一个新的数组对象moto,进行遍历和比较
{
if(moto instanceof Car) // 遍历Car子类的对象
{
moto=(Car)moto;
if(brand.equals(moto.getBrand()) && id.equals(moto.getId()) && type.equals(((Car)moto).getType()))
{
money=days*(moto.getRent());
System.out.println("应该交费:"+money);
}
}
if(moto instanceof Bus) // 遍历Bus子类的对象
{
moto=(Bus)moto;
if(brand.equals(moto.getBrand()) && id.equals(moto.getId()) && seat==(((Bus)moto).getSeat()))
{
money=days*(moto.getRent());
System.out.println("应该交费:"+money);
}
}
}
return money;
}
}
五、App.java(主程序 main)
package Z_CarManger;
import java.util.Scanner;
import org.omg.CORBA.OMGVMCID;
import Book.database;
// ========= 【主程序】
public class App {
public static void main(String[] args)
{
int m_car=1; // 轿车或客车
String m_brand=""; // 品牌
String m_id=""; // 牌照号
int m_seat=0; // 座位数
int m_rent=0; // 日租金
String m_type=""; // 车型
int m_days=0; // 天数
System.out.println("--------------- 腾飞汽车租赁管理系统 ---------------");
System.out.println(" 1、轿车 2、客车");
System.out.println(" 请选择汽车类型:");
Scanner input=new Scanner(System.in);
int m_input = input.nextInt();
m_car=m_input;
switch(m_car) {
case 1: // 轿车
System.out.print("请继续选择品牌:1.宝马 2、别克");
m_input = input.nextInt();
if(m_input==1)
{
m_brand="宝马";
System.out.print("请继续选择车型:1.X6 2、550i");
m_type=(input.nextInt()==1)?"X6":"550i";
}else
{
m_brand="别克";
System.out.print("请继续选择车型:1.林荫大道 2、GL8");
m_type=(input.nextInt()==1)?"林荫大道":"GL8";
}
break;
case 2: // 客车
System.out.print("请继续选择品牌:1.金杯 2、金龙");
m_brand=(input.nextInt()==1)?"金杯":"金龙";
System.out.print("请继续选择座位:1.16座 2、34座");
m_seat=Integer.valueOf((input.nextInt()==1)?"16":"34");
break;
}
System.out.print("输入租赁天数:");
m_days=input.nextInt();
System.out.print("输入牌照号:");
m_id=input.next();
Data1 uuu = new Data1();
uuu.init(m_brand,m_id,m_days,m_type,m_seat);
}
}
java继承数组实例_【Java】理解封装、继承、多态和对象数组的综合实例(简易的租车系统,附代码)...相关推荐
- java简易租车系统界面_租车系统的Java简单实现
一开始觉得很简单,听老师讲很有思路.想好了然后开始写,就出现问题了,还是太年轻.看了慕友的代码,然后在自己写,收获还是有的,比如让我重新认识了 instanceof car.java package ...
- java中面向对象租车问题_答答租车系统-Java面向对象的学习
定义 2 个接口 载人接口 IMannedCar.java public interface IMannedCar { int mannedNumber(); } 载货接口 ICarryFreight ...
- java租车系统维熵科技_维熵租车系统数据库
维熵租车系统数据库是一款在线租车服务系统的数据库,维熵租车系统数据库可为用户提供商务租车.接送机.旅游租车.企业租车.自驾租车.婚庆用车等自助租车服务,可以满足企业日常业务管理功能,还可以提高接单能力 ...
- java达达租车接口_菜鸟JAVA达达租车系统
主类: package com.System; import java.io.PrintStream; import java.util.Scanner; public class CarRental ...
- 一个简单的租车系统-----java
一个简单的租车系统–java 1.创建一个Car父类 定义Car父类的三个属性并封装 package demo; public class Car {private int numbers;//编号p ...
- java达达租车接口_Java实现一个达达租车系统的步骤详解
本文介绍的是利用java编写一个控制台版的"达达租车系统",下面话不多说了,来看看详细实现方法吧. 实现目标 java编写一个控制台版的"达达租车系统" 实现功 ...
- 租车系统java大致框架_Java实现答答租车系统
本文实例为大家分享了java实现答答租车系统的具体代码,供大家参考,具体内容如下 项目需求: 基本界面需求: and: 最后是把账单打印出来: 个人代码实现 基本思路:考虑到车辆之间的共性,设置一个父 ...
- java租车系统_Java实现租车系统的详细过程
这篇文章主要给大家介绍了利用Java实现一个达达租车系统的步骤,文中给出了详细的实现思路和示例代码,并在文末给出了完整的源码供大家学习下载,需要的朋友可以参考借鉴,下面来一起看看吧. 本文介绍的是利用 ...
- 自学java 答答租车系统
我发现自己学的小块的东西是很简单,每当自己实践操作的时候总是有各种各样的问题. 就做这个简单的答答租车系统时,用到了面向对象得三大特性封装.继承.多态.使用父类的引用指向子类对象. package c ...
最新文章
- linux下各种Raid介绍
- 一些Python情结
- swagger + springboot 传递 List参数解决
- 二叉排序树的删除+图解
- composer-安装插件包
- 媒智科技--深度学习算法Python后台开发--热招中~
- matlab 工业相机 曝光时间_工业相机与普通相机的差别
- 数组后存入数据、删除指定内容数据
- 如何操作最快的硬盘对拷工具
- PAT 乙级1068 万绿丛中一点红(20 分)
- Linux Canbus调试笔记
- 怎么组织计算机更新,win10更新取消组织管理提示怎么取消_win10更新提示某些设置由你的组织管理的解决步骤...
- 解码快手新市井电商,新品牌流量多,大品牌政策好
- Git error: cannot spawn ssh: No such file or directory的一个解决办法
- Notion,这应该是程序员最后一款笔记软件
- 2017远景能源Java面试
- Flickr 的最受欢迎图片
- Java 8中的Base64编码和解码
- 【网络工程师笔记】——防火墙配置
- 图文下单系统,图文下单软件,印刷系统,印刷软件