Gracias por responder a ambos.
Tal vez al ser codigos cortos, no parezca que haya diferencia, pero sí, como dicen, puede ser complicado al trabajar con programas de verdad.
Estuve revisando la siguiente entrega del curso, CU00642B, pasar objetos como parámetros.
Hay que crear instancias de las clase Taxi y Persona. Luego crear un objeto con el segundo constructor de TaxiCond
public class TaxiCond {
private Taxi vehiculoTaxi;
private Persona conductorTaxi;
public TaxiCond () {
vehiculoTaxi = new Taxi (); //Creamos un objeto Taxi con el constructor general de Taxi
conductorTaxi = new Persona (); //Creamos un objeto Persona con el constructor general de Persona
}
public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {
//Creamos un objeto Taxi con los mismos datos del Taxi recibido como parámetro
vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor() );
//Creamos un objeto Persona con los mismos datos de la Persona recibidos como parámetro
conductorTaxi = new Persona (objetoPersona.getNombre() ); }
public void setMatricula (String valorMatricula) { vehiculoTaxi.setMatricula(valorMatricula); }
public String getDatosTaxiCond () {
String matricula = vehiculoTaxi.getMatricula();
String distrito = vehiculoTaxi.getDistrito();
int tipoMotor = vehiculoTaxi.getTipoMotor();
String cadenaTipoMotor = "";
if (tipoMotor ==0) { cadenaTipoMotor = "Desconocido"; }
else if (tipoMotor == 1) { cadenaTipoMotor = "Gasolina"; }
else if (tipoMotor == 2) { cadenaTipoMotor = "Diesel"; }
String datosTaxiCond = "El objeto TaxiCond presenta estos datos. Matrícula: " + matricula +
"\n Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;
System.out.println (datosTaxiCond);
return datosTaxiCond;
}
public void setTipoMotor (int valorTipoMotor){vehiculoTaxi.setTipoMotor(valorTipoMotor);}
}
Bueno, como objeto del parámetro le pasé el objeto taxi1 que lo creé con un constructor que pedía parámetros.
Al inspeccionar el objeto taxiCond1, me muestra los valores de taxi1, tambien el del objeto creado de Persona. Hasta ahí bien, y espero se entienda lo que voy diciendo.
Luego, al código TaxiCond le cambié esto:
public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {
vehiculoTaxi = new Taxi (objetoTaxi.getMatricula(), objetoTaxi.getDistrito(), objetoTaxi.getTipoMotor() );
conductorTaxi = new Persona (objetoPersona.getNombre() ); }
y lo dejé así:
public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {
vehiculoTaxi = new Taxi ( );
conductorTaxi = new Persona (objetoPersona.getNombre() ); }
Y ahora, cuando inspecciono taxiCond1, no me figuran los datos que puse usando el segundo constructor de Taxi, que me pedía parámetros, sino con el primer constructor, sin parámetros.
aver si logro explicarme mejor.
Tengo la clase Taxi con 2 constructores. el primero no pide parámetros pero tiene sus variables inicializadas con a,b,c y d; y el segundo constructor me pide parámetros. creé un objeto taxi1 con el segundo constructor. sus valores son 1,2,3 y 4.
ahora, el segundo constructor de la clase TaxiCond me pide como parámetro un objeto Taxi. Le pasé taxi1, pero al inspeccionar no me muestra los valores 1,2,3,4 con los que creé taxi1, sino que me muesta los valores a,b,c y d.
Lo que me marea es que, vehiculoTaxi = new Taxi (objetoTaxi.getMatricula() muestre bien el valor de matricula, mientras que vehiculoTaxi = new Taxi () me muestre un valor que ni tiene taxi1
Me cuesta muchisimo entender el por qué, ni puedo explicarme bien.
Help!
xd
Aver, metodo funcion devuelve algo. get... getMatricula devolveria el valor de matricula del objeto taxi1.
Al sacar este parámetro "objetoTaxi.getMatricula()", no se qué es lo que pasa, por ahora se me ocurre que al crear la clase TaxiCond...
public class TaxiCond {
private Taxi vehiculoTaxi;
private Persona conductorTaxi;
al declarar la variable vehiculoTaxi, de por sí inicializa el constructor sin parámetros que tiene Taxi, que es:
public Taxi () {
ciudad = "Mexico D.F.";
matricula = "asd123";
distrito = "Desconocido";
tipoMotor = 2;