“房间”类是抽象的;无法实例化

时间:2011-12-15 12:11:55

标签: java abstract-class instantiation

我有一个抽象类Room,它有子类FamilyStandard,我在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;
}

但是我得到编译时错误;

  

房间很抽象;无法实例化

我知道抽象类无法实例化,但添加房间的最佳方法是什么?

3 个答案:

答案 0 :(得分:12)

您遇到此错误,因为您正在尝试创建抽象类的实例,这是不可能的。你必须

room.add(new Family(roomNumber, ensuoute));

room.add(new Standard(roomNumber, ensuoute));

答案 1 :(得分:6)

错误说明了一切:Room是一个抽象类,抽象类无法实例化。

您正尝试在此处实例化Room

new Room(roomNumber,ensuite)

您只能创建具体(即非抽象)类的实例。可能是FamilyStandard是具体类,因此可以实例化。

要解决此问题,您需要根据房间号找出正确的房型,并实例化相应的课程。

答案 2 :(得分:-1)

您正在创建抽象类的实例;

room.add(new Room(roomNumber,ensuite));

这不正确。