サブクラスRoom
とFamily
を持つ抽象クラスStandard
のクラスがあります。Hostel
クラス内にroom = new ArrayList<Room>();
を作成しました。 ArrayListに部屋を追加するメソッドがあります。
public String addRoom(String roomNumber, boolean ensuite)
{
if (roomNumber.equals(""))
return "Error - Empty name field\n";
else
room.add( new Room(roomNumber,ensuite) );
return "RoomNumber: " + roomNumber + " Ensuite: " + ensuite
+ " Has been added to Hostel " + hostelName;
}
ただし、コンパイル時エラーが発生します。
部屋は抽象的です。インスタンス化できません
抽象クラスはインスタンス化できないことを理解していますが、部屋を追加する最良の方法は何ですか?
抽象クラスのインスタンスを作成しようとしているため、このエラーが発生しますが、これは不可能です。必ず
room.add(new Family(roomNumber, ensuoute));
または
room.add(new Standard(roomNumber, ensuoute));
エラーはそれをすべて言います:Room
は抽象クラスであり、抽象クラスはインスタンス化できません。
ここでRoom
をインスタンス化しようとしています:
new Room(roomNumber,ensuite)
具象(つまり、非抽象)クラスのインスタンスのみを作成できます。 Family
とStandard
は具象クラスであり、インスタンス化できる場合がほとんどです。
これを修正するには、部屋番号を指定して正しい部屋タイプを把握し、適切なクラスをインスタンス化する必要があります。