一个机动车管理系统中有以下类的设计:
机动车类:
汽车类:奔驰车、宝马车
摩托车类:雅马哈摩托、宝马摩托
所有的车都有如下信息:
属性:品牌、价格、状态(注销/运行)
行为:显示信息(品牌、价格、状态)
现在要求为所有“宝马车系”的汽车增加一个GPS功能
请设计出上述的类结构,并用代码实现机动车管理系统统一管理显示机动车信息
创建一个抽象的机动车类
package stu.day08;
public abstract class Vehicle {
private String brand;
//品牌
private double price;
//价格
private boolean status;
//状态(注销/运行)
public Vehicle(String brand, double price, boolean status) {
this.brand = brand;
this.price = price;
this.status = status;
}
//状态
// 显示车辆信息
abstract void displayInfo();
public String getBrand() {
return brand;
}
public void setBrand(String brand) {
this.brand = brand;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public boolean isStatus() {
return status;
}
public void setStatus(boolean status) {
this.status = status;
}
@Override
public String toString() {
return "Vehicle{" +
"brand='" + brand + ''' +
", price=" + price +
", status=" + status +
'}';
}
}
创建一个GPS接口
package stu.day08;
public interface GPS {
void ShowGPSInfo();
}
创建摩托车类
package stu.day08;
public class MoTuo extends Vehicle{
public MoTuo(String brand, double price, boolean status) {
super(brand, price, status);
}
@Override
void displayInfo() {
}
}
创建一个汽车类
package stu.day08;
public class QiCheIml extends Vehicle{
public QiCheIml(String brand, double price, boolean status) {
super(brand, price, status);
}
@Override
void displayInfo() {
// System.out.println("汽车品牌:" + super.getBrand());
// System.out.println("汽车价格:" + super.getPrice());
// System.out.println("汽车状态:" + ( super.isStatus()? "运行" : "注销"));
}
// @Override
// void GPS();
}
创建汽车的子类:奔驰车、宝马车
1,奔驰
package stu.day08;
public class BenCh extends QiCheIml{
public BenCh(String brand, double price, boolean status) {
super(brand, price, status);
}
@Override
void displayInfo() {
super.displayInfo();
System.out.println("汽车品牌:" + super.getBrand());
System.out.println("汽车价格:" + super.getPrice());
System.out.println("汽车状态:" + ( super.isStatus()? "运行" : "注销"));
}
}
2,宝马
package stu.day08;
public class BaoMa extends QiCheIml implements GPS {
public BaoMa(String brand, double price, boolean status) {
super(brand, price, status);
}
// public BaoMa(String brand, double price, boolean status) {
// super(brand, price, status);
// }
@Override
void displayInfo() {
System.out.println("汽车品牌:" + super.getBrand());
System.out.println("汽车价格:" + super.getPrice());
System.out.println("汽车状态:" + ( super.isStatus()? "运行" : "注销"));
}
@Override
public void ShowGPSInfo() {
System.out.println("这是一辆宝马汽车,GPS 功能已启用");
}
}
创建摩托车的子类:
1,宝马摩托车
package stu.day08;
public class BaoMaMo extends MoTuo implements GPS {
public BaoMaMo(String brand, double price, boolean status) {
super(brand, price, status);
}
@Override
void displayInfo() {
System.out.println("摩托车品牌:" + super.getBrand());
System.out.println("摩托车价格:" + super.getPrice());
System.out.println("摩托车状态:" + ( super.isStatus()? "运行" : "注销"));
}
@Override
public void ShowGPSInfo() {
System.out.println("这是一辆宝马摩托车,GPS 功能已启用");
}
}
2,雅马哈摩托车
package stu.day08;
public class YaMaMo extends MoTuo{
public YaMaMo(String brand, double price, boolean status) {
super(brand, price, status);
}
@Override
void displayInfo() {
super.displayInfo();
System.out.println("摩托车品牌:" + super.getBrand());
System.out.println("摩托车价格:" + super.getPrice());
System.out.println("摩托车状态:" + ( super.isStatus()? "运行" : "注销"));
}
}
定义一个车辆管理类
package stu.day08;
//定义车辆平台
public class VehicleManagementSystem {
// 主方法
public static void main(String[] args) {
// 创建车辆对象数组
Vehicle[] vehicles = {
new BenCh("奔驰",500000,true),
new BaoMa("宝马",800000,true),
new YaMaMo("雅马哈",200000,false),
new BaoMaMo("宝马摩托",300000,false),
};
// 遍历车辆数组
for (Vehicle vehicle : vehicles) {
// 调用显示车辆信息的方法
vehicle.displayInfo();
// 判断是否为GPS类型,如果是则调用显示GPS信息的方法
if (vehicle instanceof GPS){
((GPS) vehicle).ShowGPSInfo();
}
System.out.println();
}
}
}