Class 'Room' is abstract; cannot be instantiated
Solution 1
You have this error because you are trying to create an instance of abstract class, which is impossible. You have to
room.add(new Family(roomNumber, ensuoute));
or
room.add(new Standard(roomNumber, ensuoute));
Solution 2
The error says it all: Room
is an abstract class, and abstract classes cannot be instantiated.
You're trying to instantiate Room
here:
new Room(roomNumber,ensuite)
You can only create instances of concrete (i.e. non-abstract) classes. It is likely to be the case that Family
and Standard
are concrete classes and can therefore be instantiated.
To fix this, you'll need to figure out the correct room type given the room number, and instantiate the appropriate class.
Darren Burgess
Recent Graduate of Northumbria University with 1st class Honors in Computing Currently a Graduate at Hewlett-Packard in incident management.
Updated on December 16, 2020Comments
-
Darren Burgess over 3 years
I have a class an abstract class
Room
which has subclassesFamily
andStandard
, I have createdroom = new ArrayList<Room>();
within aHostel
class. I have a method to add a room to the 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; }
However I get the compile time error;
Room is abstract; cannot be instantiated
I understand that abstract classes cannot be instantiated, but what is the best way to add rooms?
-
Darren Burgess over 12 yearsthanks, this is exactly what i was looking for, duno how i didnt think of it