2011-12-15 21 views
8

Tengo una clase clase abstracta Room que tiene subclases Family y Standard, he creado room = new ArrayList<Room>(); dentro de una clase Hostel. Tengo un método para agregar una habitación a ArrayList;Clase 'Habitación' es abstracto; no se puede crear una instancia

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; 
} 

Sin embargo, me sale el error de tiempo de compilación;

La habitación es abstracta; no se puede crear una instancia

Entiendo que las clases abstractas no se pueden crear instancias, pero ¿cuál es la mejor manera de agregar salas?

+2

Usted dice que "tiene una 'clase' de clase abstracta", y pregunta por qué el compilador se queja cuando intenta crear una instancia de la misma? –

+1

Creo que debería echarle un rápido vistazo a esta página: http://docs.oracle.com/javase/tutorial/ :-) –

+0

¿Por qué hizo el resumen de la sala? Pregúntate si realmente entiendes lo que 'abstracto' hace y deberías poder contestar la pregunta tú mismo. – Kapep

Respuesta

8

Tiene este error porque está intentando crear una instancia de clase abstracta, lo cual es imposible. Tienes que

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

o

room.add(new Standard(roomNumber, ensuoute)); 
+1

gracias, esto es exactamente lo que estaba buscando, no sé cómo lo pensé –

+1

:) No se preocupe, le pasa a todos ... .. – AValchev

6

El error dice todo: Room es una clase abstracta, y las clases abstractas no se pueden crear instancias.

Usted está tratando de crear una instancia Room aquí:

new Room(roomNumber,ensuite) 

Sólo se pueden crear instancias de clases concreta (es decir, no abstractos). Es probable que Family y Standard sean clases concretas y, por lo tanto, pueden crearse instancias.

Para solucionar esto, deberá averiguar el tipo de habitación correcto dado el número de habitación y crear una instancia de la clase apropiada.

0

Está creando una instancia de una clase abstracta;

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

Esto no es correcto.

Cuestiones relacionadas