Класс «Комната» является абстрактным;не может быть создан - PullRequest
12 голосов
/ 15 декабря 2011

У меня есть класс абстрактный класс 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;
}

Однако я получаю ошибку времени компиляции;

Комната абстрактная; не может быть создан

Я понимаю, что абстрактные классы не могут быть созданы, но как лучше добавить комнаты?

Ответы [ 3 ]

12 голосов
/ 15 декабря 2011

У вас есть эта ошибка, потому что вы пытаетесь создать экземпляр абстрактного класса, что невозможно. Вы должны

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

или

room.add(new Standard(roomNumber, ensuoute));
6 голосов
/ 15 декабря 2011

Ошибка говорит само за себя: Room является абстрактным классом, и создание абстрактных классов невозможно.

Вы пытаетесь создать экземпляр Room здесь:

new Room(roomNumber,ensuite)

Вы можете создавать только экземпляры конкретных (т.е. не абстрактных) классов.Вероятно, это тот случай, когда Family и Standard являются конкретными классами и, следовательно, могут быть созданы.

Чтобы это исправить, вам нужно определить правильный тип комнаты, учитывая номер комнаты,и создать экземпляр соответствующего класса.

0 голосов
/ 15 декабря 2011

Вы создаете экземпляр абстрактного класса;

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

Это не правильно.

...