JAVA二阶段学习预热 ------ 多态练习(汽车租赁)

本文介绍了JAVA二阶段学习中关于多态的实践案例——汽车租赁系统。系统涉及租车、还车功能,考虑不同类型的车(轿车、客车、卡车)及其日租金计算,每种车有独特的品牌、车牌号和优惠政策。通过抽象类和继承实现交通类与子类(Bus、Car、Truck)的设计,并利用数组存储车库中的车辆。在Main类中实现主要功能,但由于个人原因,作者近期可能进度较慢。
摘要由CSDN通过智能技术生成

汽车租赁:

复习点:1.继承 2.抽象类 3.向上转型

要求:实现租车和还车功能,预先设计好能够借用和归还,并计算租金,车分为轿车客车和卡车,分别按照类型,载客量和吨位来确定日租金,并且每一种车的优惠与天数有关,优惠政策也不同,车必须有车牌号,每种车的品牌各不相同,一辆车不能同时借出。

代码实现思路:所有的车继承于抽象类交通类,确定交通类的属性:品牌,租金,车牌号,租借信息,创建get/set方法,状态变更方法并创建抽象方法 显示信息,车辆匹配(重写equals),计算租金。

package BorrowClass;

public abstract class Train {
private String trainNumber;
private String brand;
private double ret;
private boolean can=true;
public void changeCan(){//变更租借状态
	if(can){
		can=false;
	}else{
		can=true;
	}
}
public boolean getCan(){//返回当前租借状态
	return can;
}
public Train(String trainNumber,String brand,double ret){
	this.brand=brand;
	this.ret=ret;
	this.trainNumber=trainNumber;
}
public double getRet(){//返回当前日租金
	return ret;
}

public void setRet(int ret){//设置日租金
	this.ret=ret;
}
public String getTrainNumber(){//返回车牌号
	return trainNumber;
}
public String getBrand(){//返回品牌
	return brand;
}
public abstract void show();//显示信息
public abstract boolean equals(Object obj);//重写比较
public abstract double BorrowRet(int day);//计算租金
}

子类根据额外增加属性(类型,座位数,吨位)重写抽象类,并增加相关属性

Bus类:

package BorrowClass;

public class Bus extends Train{
private int desk;
	public Bus(String trainNumber, String brand, double ret,int desk) {
		super(trainNumber, brand, ret);
		this.desk=desk;
	}
	@Override
	public double BorrowRet(int day) {
		double ret=this.getRet();
		if(day>=150){
			ret*=0.6*day;
		}else if(day>=30){
			ret*=0.7*day;
		}else if(day>=7){
			ret*=0.8*day;
		}else if(day>=3){
			ret*=0.9*day;
		}
		return ret ;
	}
	public int getDesk(){
		return desk;
	}
	@Override
	public boolean equals(Object obj) {
		if(obj instanceof Bus){
			if(((Bus) obj).getBrand().equalsIgnoreCase(this.getBrand())&&
					((Bus)obj).getDesk()==(this.getDesk())){
				return true;
			}
		}
		return false;
	}
	@Override
	public void show() {
		System.out.println("座位数:"+this.desk);
		System.out.println("品牌:"+this.getBrand());
		Syst
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值