練習問題3.6
Vehicle.java(抜粋)
public class Vehicle { private long VehicleID; //車単位のID private static long NextVehicleID=0; //次の乗り物の識別番号 private EnergySource es; //コンストラクタ Vehicle(){ VehicleID = NextVehicleID; NextVehicleID++; } Vehicle(EnergySource es){ this(); this.es = es; } public void start(){ if(es.empty()) System.out.println("燃料が空です。"); else System.out.println("発車できます。"); } public static void main(String args[]){ Vehicle gasVehicle = new Vehicle(new GasTank(10.0)); Vehicle noGasVehicle = new Vehicle(new GasTank(0.0)); Vehicle batteryVehicle = new Vehicle(new Battery(100.0)); Vehicle noBatteryVehicle = new Vehicle(new Battery(0.0)); gasVehicle.start(); noGasVehicle.start(); batteryVehicle.start(); noBatteryVehicle.start(); } }
EnergySource.java
public abstract class EnergySource { abstract boolean empty(); }
GasTank.java
public class GasTank extends EnergySource{ private double fuel; public GasTank(double fuel){ this.fuel = fuel; } public boolean empty(){ if(fuel > 0) return false; else return true; } }
Battery.java
public class Battery extends EnergySource { private double battery; Battery(double battery) { this.battery = battery; } public boolean empty(){ if(battery > 0) return false; else return true; } }
実行結果
発車できます。
燃料が空です。
発車できます。
燃料が空です。