我应该如何编写要求的方法? - 抽象课

时间:2015-03-18 06:02:07

标签: inheritance interface abstract extend

注意:我已经完成了A,B,C。所以我要求D部分。

  I have no idea how to write it? Is anyone can help me? 

考虑以下课程:

public abstract class Vehicle {

    public boolean startEngine() {/* code */ }

    public abstract int getMaxSpeed();

    public abstract double getVehicleValue();

    }

public interface Rentable {

    public double getWeeklyRate();

    }

public interface UsesPremiumGas {

    public void fillTankWithPremiumGas(double gallons);

    }

public class Car extends Vehicle implements Rentable {/*code*/}

public class FancyCar extends Car implements UsesPremiumGas { /* code */ }

public class Bus extends Vehicle { /* code */ }

回答以下问题(必须表示代码编译)。

a)必须在Car类中实现哪些方法?

b)必须在FancyCar类中实现哪些方法?

c)必须在Bus类中实现哪些方法?

d)以上课程用于模拟公司拥有的车队。

完成以下方法,打印出可以租用的车队最便宜的每周费率?在没有车辆可以租用的情况下,方法应该说明。

/**
* Prints the cheapest weekly rate available among a fleet
* of vehicles, or prints that no vehicle can be rented.
* @param fleet the list of vehicles
*/
public void printCheapestWeeklyRate(ArrayList<Vehicle>fleet) {}

1 个答案:

答案 0 :(得分:0)

对于ArrayList中的每个Vehicle,检查它是否是Rentable接口的实例。

if(vehicle instanceof Rentable){...}

为所有可租用的实例车辆调用方法getWeeklyRate(),并将每周费率存储在带有车辆对象的地图中作为关键字。

如果地图为空,那么就不能租用任何车辆&#39;。

否则从地图中找到最小值,相应的车辆是最便宜的。

您可以尝试以下代码:

public void printCheapestWeeklyRate(ArrayList<Vehicle> fleet) 
    {
        Map<Vehicle,Double> rateMap = new HashMap<Vehicle,Double>();
        for(Vehicle vehicle : fleet)
        {
            if(vehicle instanceof Rentable)
            {
                rateMap.put(vehicle, vehicle.getWeeklyRate());
            }
        }
        if(rateMap.isEmpty()) // No vehicle is rentable
        {
            System.out.println("No vehicle is available for rent");
        }
        else // Some vehicles are rentable
        {
            Vehicle cheapestVehicle;
            Double min = Double.valueOf(Double.POSITIVE_INFINITY);
            for(Map.Entry<Vehicle, Double> m : rateMap.entrySet()) // Get the cheapest vehicle
            {
                if(min.compareTo(m.getValue()) > 0)
                {
                    cheapestVehicle = m.getKey();
                }
            }
            // Print what you want as output using **cheapestVehicle**
        }
    }