使用所学的封装、继承、多态、抽象、接口来完成一个汽车查询系统。
需求描述:共有3种类型的汽车:小轿车、大巴车、卡车,其中小轿车是4座、大巴车是53座、卡车是2座,要求使用封装、继承、抽象来完成车辆的定义。
可以对汽车信息作出修改,卡车可以运货但是载重量不能超过12吨,使用自定义异常来处理错误,小轿车和大巴车没有此功能,要求使用接口来实现。
具体实现代码:
public interface Container {
public int getweight();
}
public abstract class Car {
private String name;
private String color;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getColor() {
return color;
}
public void setColor(String color) {
this.color = color;
}
public abstract String seatNum();
public Car(String name, String color) {
super();
this.name = name;
this.color = color;
}
}
public class Bus extends Car {
public Bus(String name, String color) {
super(name, color);
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "53座";
}
}
public class Truck extends Car implements Container {
private int weight;
public Truck(String name,String color,int weigth) {
super(name,color);
this.weight = weigth;
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "2座";
}
@Override
public int getweight() {
// TODO Auto-generated method stub
return this.weight;
}
}
public class Sedan extends Car {
public Sedan(String name, String color) {
super(name, color);
}
@Override
public String seatNum() {
// TODO Auto-generated method stub
return "4座";
}
}
public class CarException extends Exception {
public CarException(String error) {
super(error);
}
}
import java.util.Scanner;
public class Test {
private static Scanner scanner;
private static Sedan sedan;
private static Bus bus;
private static Truck truck;
private static Car[] cars;
static {
scanner = new Scanner(System.in);
sedan = new Sedan("小轿车","黑色");
bus = new Bus("大巴车","绿色");
truck = new Truck("卡车","蓝色",2);
cars = new Car[3];
cars[0] = sedan;
cars[1] = bus;
cars[2] = truck;
}
public void showCars() {
System.out.println("车辆名称\t\t车辆颜色\t\t座位数\t\t载重量");
Car car = null;
for(int i = 0; i < cars.length;i++) {
car = cars[i];
if(car instanceof Sedan) {
Sedan sedan = (Sedan)car;
System.out.println(sedan.getName()+"\t\t"+sedan.getColor()+"\t\t"+sedan.seatNum());
}
if(car instanceof Bus) {
Bus bus = (Bus)car;
System.out.println(bus.getName()+"\t\t"+bus.getColor()+"\t\t"+bus.seatNum());
}
if(car instanceof Truck) {
Truck truck = (Truck)car;
System.out.println(truck.getName()+"\t\t"+truck.getColor()+"\t\t"+truck.seatNum()+"\t\t"+truck.getweight() + "吨");
}
System.out.println("1.小轿车\t2.大巴车\t3.卡车");
System.out.println("请输入您要修改的车辆。");
int num = scanner.nextInt();
switch(num){
case 1:
update("sedan");
break;
case 2:
update("bus");
break;
case 3:
update("truck");
break;
default:
Syste.out.println("您输入的数字有误,请重新输入。");
showCars();
break;
}
}
}
public void update(String type){
String name = null;
String color = null;
System.out.println("请输入车辆名称");
name = scanner.next();
System.out.println("请输入车辆颜色");
color = scanner.next();
//小轿车
if(type.equals("sedan")){
/*System.out.println("请输入车辆名称");
name = scanner.next();
System.out.println("请输入车辆颜色");
color = scanner.next();*/
Sedan sedan = new Sedan(name,color);
cars[0] = sedan;
}
//大巴车
if(type.equals("大巴车")){
/*System.out.println("请输入车辆名称");
name = scanner.next();
System.out.println("请输入车辆颜色");
color = scanner.next();*/
Sedan sedan = new Sedan(name,color);
cars[0] = sedan;
}
//卡车
if(type.equals("truck")){
/*System.out.println("请输入车辆名称");
name = scanner.next();
System.out.println("请输入车辆颜色");
color = scanner.next();*/
System.out.println("请输入车辆的载重量");
int weight = scanner.nextInt();
if(weight > 12){
try{
throw new CarException("卡车的载容量不能超过12吨");
}catch(CarException e ){
e.printStackTrace();
return;
}
}
Truck truck = new Truck(name,color,weight);
cars[2] = truck;
}
showCars();
}
public static void main(String[] args) {
Test test = new Test();
test.showCars();
}
}