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

Dar*_*ess 12 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;
}
Run Code Online (Sandbox Code Playgroud)

但是我得到编译时错误;

房间很抽象; 无法实例化

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

AVa*_*hev 12

您有这个错误,因为您正在尝试创建抽象类的实例,这是不可能的.你必须

room.add(new Family(roomNumber, ensuoute));
Run Code Online (Sandbox Code Playgroud)

要么

room.add(new Standard(roomNumber, ensuoute));
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这正是我正在寻找的,不知道我怎么没有想到它 (2认同)

NPE*_*NPE 6

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

你试图在Room这里实例化:

new Room(roomNumber,ensuite)
Run Code Online (Sandbox Code Playgroud)

您只能创建具体(即非抽象)类的实例.这很可能是该案件Family,并Standard有具体的课程,因此被实例化.

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