/* * 練習問題3.8 p.92 * VehicleとPassengerVehicleをCloneable型にしなさい。複製に関して、4つの選択肢のどれを選択すべきでしょうか。 * Object.cloneによる単純なコピーは、それらのクラスのcloneメソッドとしては正しいですか。 */ package ch03.ex03_08; public class PassengerVehicle extends Vehicle implements Cloneable { private int sheet; private int passenger; public PassengerVehicle clone() { // 単純なObject.cloneによるコピーでは、idが正しく処理されない PassengerVehicle temp = (PassengerVehicle) super.clone(); temp.sheet = sheet; temp.passenger = passenger; return temp; } PassengerVehicle(int capacity, int people) { sheet = capacity; passenger = people; } public int getSheet() { return sheet; } public int getPassenger() { return passenger; } /** * @param args */ public static void main(String[] args) { PassengerVehicle test1 = new PassengerVehicle(4, 3); System.out.println("Sheets number: " + test1.getSheet()); System.out.println("Passenger number: " + test1.getPassenger()); System.out.println(""); PassengerVehicle test2 = new PassengerVehicle(8, 5); System.out.println("Sheets number: " + test2.getSheet()); System.out.println("Passenger number: " + test2.getPassenger()); PassengerVehicle test3; test3 = (PassengerVehicle) test2.clone(); System.out.println(""); System.out.println("clone result: sheet: " + test3.getSheet() + ", passenger: " + test3.getPassenger()); System.out.println(test1.getId()); System.out.println(test2.getId()); System.out.println(test3.getId()); } }