我有一个抽象类Room
,它有子类Family
和Standard
,我在room = new ArrayList<Room>();
类中创建了Hostel
。我有一个方法来向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;
}
但是我得到编译时错误;
房间很抽象;无法实例化
我知道抽象类无法实例化,但添加房间的最佳方法是什么?
答案 0 :(得分:12)
您遇到此错误,因为您正在尝试创建抽象类的实例,这是不可能的。你必须
room.add(new Family(roomNumber, ensuoute));
或
room.add(new Standard(roomNumber, ensuoute));
答案 1 :(得分:6)
错误说明了一切:Room
是一个抽象类,抽象类无法实例化。
您正尝试在此处实例化Room
:
new Room(roomNumber,ensuite)
您只能创建具体(即非抽象)类的实例。可能是Family
和Standard
是具体类,因此可以实例化。
要解决此问题,您需要根据房间号找出正确的房型,并实例化相应的课程。
答案 2 :(得分:-1)
您正在创建抽象类的实例;
room.add(new Room(roomNumber,ensuite));
这不正确。