为了账号安全,请及时绑定邮箱和手机立即绑定

有没有使用接口的方式做出来的?

就是按照这种思路:

1、创建两个接口(载客接口A-载客量)、(载货接口B-载货量),载客和货接口C extend 载客接口A,载货接口B(载客量、载货量),一个抽象父类Car(车型、单价-->元/天);
2、实现-卡车类 extend 父类Car implement 载货接口B;
    实现-客车类 extend 父类Car implement 载客接口A;
    实现-皮卡类 extend 父类Car implement 载客和货接口C;
3、租车系统类:一维数组 实例化 卡车对象、客车对象 和 皮卡对象;
4、客户选车、分类汇总车辆后,输出租车明细与总价。

正在回答

5 回答

//总类
public class Car {
    private String name;
    private int prices;
    private int id;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getPrices() {
        return prices;
    }

    public void setPrices(int prices) {
        this.prices = prices;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }
}

载货接口:

public interface CargoNum {
    void setCargoNum(int num);
}

载人接口:

public interface PersonNum {
    void setPersonNum(int num);
}

载人车类:

public class Bus extends Car implements PersonNum{
    private int personNum;
    public Bus(String name, int prices, int personNum) {
        super.setName(name);
        super.setPrices(prices);
        this.personNum = personNum;
    }
    public int getPersonNum() {
        return personNum;
    }
    public void setPersonNum(int personNum) {
        this.personNum = personNum;
    }
    @Override
    public String toString() {
        return  getName()+"\t\t"+
                getPrices()+"/天\t"+
                "载人:"+getPersonNum()+"人";
    }
}

载货车类:

public class CargoCar extends Car implements CargoNum{
    private int cargoNum;
    public CargoCar(String name, int prices, int cargoNum) {
        this.setName(name);
        this.setPrices(prices);
        this.cargoNum = cargoNum;
    }
    public int getCargoNum() {
        return cargoNum;
    }
    public void setCargoNum(int cargoNum) {
        this.cargoNum = cargoNum;
    }
    @Override
    public String toString() {
        return  getName()+"\t\t"+
                getPrices()+"/天\t"+
                "载货:"+getCargoNum()+"吨";
    }
}

混合车类:

public class MixCar extends Car implements PersonNum, CargoNum {
    private int cargoNum;
    private int personNum;
    public MixCar(String name, int prices, int personNum, int cargoNum) {
        super.setName(name);
        super.setPrices(prices);
        this.personNum = personNum;
        this.cargoNum = cargoNum;
    }
    @Override
    public void setCargoNum(int num) {
        cargoNum = num;
    }
    @Override
    public void setPersonNum(int num) {
        personNum = num;
    }
    public int getCargoNum() {
        return cargoNum;
    }
    public int getPersonNum() {
        return personNum;
    }
    @Override
    public String toString() {
        return getName() + "\t\t" +
                getPrices() + "/天\t" +
                "载人:" + getPersonNum() + "人 "+
                "载货:" + getPersonNum() + "吨";
    }
}

工具处理类:

public class CarUtil {
    private static int id = 0;
    private List<Car> carUtilList;
    public CarUtil() {
        id = 0;
        carUtilList = new ArrayList<>();
    }
    public void add(Car car) {
        id++;
        if (car instanceof Bus) {
            Bus bus = (Bus) car;
            System.out.println(id+".\t\t"+ bus.toString());
        } else if (car instanceof CargoCar) {
            CargoCar cargoCar = (CargoCar) car;
            System.out.println(id+".\t\t"+cargoCar.toString());
        }else if (car instanceof MixCar) {
            MixCar mixCar = (MixCar) car;
            System.out.println(id+".\t\t"+mixCar.toString());
        }
        carUtilList.add(car);
    }
    public Car getCar(int index) {
        return carUtilList.get(index);
    }
}

主函数:

public class Main {
    private static CarUtil carUtil;
    public static void main(String[] args) {
        System.out.println("欢迎使用大大租车系统:\n" +
                "您是否要租车:1是 0否");
        int isUse = getInput();
        while (isUse != 1 && isUse != 0) {
            System.out.println("输入错误。");
            System.out.println("欢迎使用大大租车系统:\n" +
                    "您是否要租车:1是 0否");
            isUse = getInput();
        }
        if (isUse == 0) {
            System.out.println("系统已退出");
            return;
        } else {
            System.out.println("您可租车的类型及价目表:");
            System.out.println("序号\t汽车名称\t 租金\t 容量");
            initData();
            System.out.println("请输入您要租车的数量");
            int num = getInput();
            int[] index = new int[num];
            for (int i = 0; i < num; i++) {
                System.out.println("请输入第" + (i + 1) + "辆车的序号:");
                index[i] = getInput();
            }
            System.out.println("请输入租车天数:");
            int days = getInput();
            output(index, days);
        }
    }
    private static void output(int[] indexes, int days) {
        int numPeople = 0;
        int numCargo = 0;
        StringBuilder cargoCarName = new StringBuffer();
        StringBuilder pCarName = new StringBuffer();
        int price = 0;
        for (int index : indexes) {
            System.out.println(index + "");
            Car car = carUtil.getCar(index-1);
            price += car.getPrices();
            if (car instanceof Bus) {
                Bus bus = (Bus) car;
                pCarName.append(car.getName()).append("  ");
                numPeople = bus.getPersonNum() + numPeople;
            } else if (car instanceof MixCar) {
                MixCar mixCar = (MixCar) car;
                pCarName.append(car.getName()).append("  ");
                cargoCarName.append(car.getName()).append("  ");
                numPeople += mixCar.getPersonNum();
                numCargo += mixCar.getCargoNum();
            } else if (car instanceof CargoCar) {
                CargoCar cargoCar = (CargoCar) car;
                cargoCarName.append(car.getName()).append("  ");
                numCargo += cargoCar.getCargoNum();
            }
        }
        System.out.println("***可载人的车有:");
        System.out.println(pCarName + "共载人:" + numPeople + "人");
        System.out.println("***可载货的车有:");
        System.out.println(cargoCarName + "共载货:" + numCargo + "吨");
        System.out.println("***出租车总价格:" + price*days);
    }
    public static int getInput() {
        Scanner scanner = new Scanner(System.in);
        return scanner.nextInt();
    }
    public static void initData() {
        carUtil = new CarUtil();
        carUtil.add(new Bus("奥迪A4", 500, 4));
        carUtil.add(new Bus("马自达6", 400, 4));
        carUtil.add(new MixCar("皮雪卡6", 450, 4, 2));
        carUtil.add(new Bus("金龙", 800, 20));
        carUtil.add(new CargoCar("松花江", 400, 4));
        carUtil.add(new CargoCar("奔驰", 1000, 20));
    }
}

基本用上了第二季所有学的知识,除了抽象类(其实接口应该也算调用了抽象类),仅供参考。

0 回复 有任何疑惑可以回复我~
#1

魔铃咔咔 提问者

非常感谢!腻害腻害!!
2017-05-12 回复 有任何疑惑可以回复我~
#2

qq_安稳随性_1

请问一下工具处理类的功能是干什么的
2017-07-11 回复 有任何疑惑可以回复我~
#3

y狒狒y 回复 qq_安稳随性_1

他好像是用了一个集合来保存那个车的基本信息,所以他创建了一个工具类来实现。
2018-05-07 回复 有任何疑惑可以回复我~

我也是这样想的,厉害厉害

0 回复 有任何疑惑可以回复我~

什么错误?

0 回复 有任何疑惑可以回复我~

为什么我用这个代码会出错

0 回复 有任何疑惑可以回复我~
#1

浮躁的小螃蟹_0

什么错误?
2017-07-11 回复 有任何疑惑可以回复我~


1、创建两个接口(载客接口A-载客量)、(载货接口B-载货量),载客和货接口C extend 载客接口A,载货接口B(载客量、载货量),一个抽象父类Car(车型、单价-->元/天);
2、实现-卡车类 extend 父类Car implement 载货接口B;
    实现-客车类 extend 父类Car implement 载客接口A;
    实现-皮卡类 extend 父类Car implement 载客和货接口C;
3、租车系统类:一维数组 实例化 卡车对象、客车对象 和 皮卡对象;
4、客户选车、分类汇总车辆后,输出租车明细与总价

66666

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Java入门第二季 升级版
  • 参与学习       530633    人
  • 解答问题       6091    个

课程升级!以终为始告别枯燥,在开发和重构中体会Java面向对象编程的奥妙

进入课程

有没有使用接口的方式做出来的?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信