Dar*_*ess 12 java abstract-class instantiation
我有一个类的抽象类,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;
}
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)
错误说明了一切:Room是一个抽象类,并且无法实例化抽象类.
你试图在Room这里实例化:
new Room(roomNumber,ensuite)
Run Code Online (Sandbox Code Playgroud)
您只能创建具体(即非抽象)类的实例.这很可能是该案件Family,并Standard有具体的课程,因此被实例化.
要解决此问题,您需要根据房间号找出正确的房间类型,并实例化相应的类.
| 归档时间: |
|
| 查看次数: |
43374 次 |
| 最近记录: |