Foros del Web » Programación para mayores de 30 ;) » Java »

Problemilla... creación de objetos

Estas en el tema de Problemilla... creación de objetos en el foro de Java en Foros del Web. Haber os pongo mi problema... public class LectorConCocheNuevo{ public static void main (String[]args){ LectorConCocheNuevo lector = new LectorConCocheNuevo() ; Vehiculo miCocheNuevo = lector.comprarVehiculo(); } private ...
  #1 (permalink)  
Antiguo 11/09/2012, 11:02
 
Fecha de Ingreso: febrero-2012
Mensajes: 21
Antigüedad: 12 años, 9 meses
Puntos: 0
Problemilla... creación de objetos

Haber os pongo mi problema...

public class LectorConCocheNuevo{
public static void main (String[]args){

LectorConCocheNuevo lector = new LectorConCocheNuevo();

Vehiculo miCocheNuevo = lector.comprarVehiculo();

}

private Vehiculo comprarVehiculo(){
return new VehiculoDiesel();
}

}

Como veis creo un objeto de mi clase LectorConCocheNuevo para acceder a mi metodo comprarVehiculo este retorna un objeto de la clase VehiculoDiesel que a su vez es una clase derivada de la clase Vehiculo. El problema es que al llamar a el metodo comprarVehiculo no me retorna un objeto de la clase VehiculoDiesel, sino de la clase Vehiculo. Por eso no puedo acceder a una interfaz que la implenta la clase VehiculoDiesel.

Pd.El objeto creado miCocheNuevo deberia de ser un objeto de la clase VehiculoDiesel que es lo que retorna la funcion comprarVehiculo y no de la clase Vehiculo.

Espero que me podais ayudar y decir el porque de esto.. Un saludo y mil gracias...
  #2 (permalink)  
Antiguo 11/09/2012, 11:25
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Problemilla... creación de objetos

Buenas,

En realidad estás devolviendo un objeto de la clase VehiculoDiesel, pero desde un referencia de la clase Vehiculo.

Tienes dos formas de solucionar tu problema.

1. Realizar una conversión

Código Java:
Ver original
  1. public class LectorConCocheNuevo{
  2. public static void main (String[]args){
  3.  
  4. LectorConCocheNuevo lector = new LectorConCocheNuevo();
  5.  
  6. Vehiculo miCocheNuevo = lector.comprarVehiculo();
  7.  
  8. //instanceof te devuelve verdadero si la referencia es de la clase VehiculoDiesel o una subclase de esta
  9. if (miCocheNuevo instanceof VehiculoDiesel){
  10. VehiculoDiesel cocheDiesel = (VehiculoDiesel)miCocheNuevo;
  11. }
  12.  
  13. }
  14.  
  15. private Vehiculo comprarVehiculo(){
  16. return new VehiculoDiesel();
  17. }
  18.  
  19. }

2. Devolver VehiculoDiesel en el método

Código Java:
Ver original
  1. public class LectorConCocheNuevo{
  2. public static void main (String[]args){
  3.  
  4. LectorConCocheNuevo lector = new LectorConCocheNuevo();
  5.  
  6. VehiculoDiesel miCocheNuevo = lector.comprarVehiculo();
  7.  
  8. }
  9.  
  10. private VehiculoDiesel comprarVehiculo(){
  11. return new VehiculoDiesel();
  12. }
  13.  
  14. }

Un saludo y me comentas si te ha servido.
  #3 (permalink)  
Antiguo 11/09/2012, 11:25
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 11 meses
Puntos: 35
Respuesta: Problemilla... creación de objetos

pues si dices private vehiculo te retornara un objeto de este tipo.
cre q deberia ser
private vehiculodiesel comprarvehiculo()
  #4 (permalink)  
Antiguo 12/09/2012, 08:31
 
Fecha de Ingreso: febrero-2012
Mensajes: 21
Antigüedad: 12 años, 9 meses
Puntos: 0
Respuesta: Problemilla... creación de objetos

Muchas gracias alex utilice la conversión y fue perfecto..

Etiquetas: clase, creación, objetos, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:25.