it-swarm-pt.tech

A classe 'Sala' é abstrata; não pode ser instanciado

Eu tenho uma classe uma classe abstrata Room que possui subclasses Family e Standard, criei room = new ArrayList<Room>(); dentro de uma classe Hostel. Eu tenho um método para adicionar um quarto ao 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;
}

No entanto, recebo o erro de tempo de compilação;

O quarto é abstrato; não pode ser instanciado

Entendo que as aulas abstratas não podem ser instanciadas, mas qual é a melhor maneira de adicionar salas?

12
Darren Burgess

Você tem esse erro porque está tentando criar uma instância da classe abstrata, o que é impossível. Voce tem que

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

ou

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

O erro diz tudo: Room é uma classe abstrata e as classes abstratas não podem ser instanciadas.

Você está tentando instanciar Room aqui:

new Room(roomNumber,ensuite)

Você só pode criar instâncias de classes concretas (ou seja, não abstratas). É provável que Family e Standard sejam classes concretas e, portanto, possam ser instanciadas.

Para corrigir isso, você precisará descobrir o tipo de sala correto, com base no número da sala, e instanciar a classe apropriada.

6
NPE