Hola, vehiculoTaxi es un atributo (campo) de la clase, y en el constructor debemos inicializarlo.
El constructor más básico sería:
public TaxiCond () {
vehiculoTaxi = new Taxi ( );
conductorTaxi = new Persona ( ); }
Aquí simplemente estamos inicializando, pero los atributos no tendrán información (sólo la información de defecto)
Como alternativa tendríamos:
public TaxiCond (Taxi objetoTaxi, Persona objetoPersona) {
vehiculoTaxi = objetoTaxi;
conductorTaxi = objetoPersona; }
En este caso no estamos creando nuevos objetos, sino que hacemos que los objetos que se reciben como parámetros pasen a ser los atributos de la clase. Los objetos objetoTaxi y objetoPersona tendrán que haber sido creados previamente (si no es así, no podrían ser recibidos como parámetros). En este caso, si modificas el objeto recibido, se modificará el atributo. Y si modificas el atributo, se modificará el objeto recibido.
Finalmente esta alternativa:
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() ); }
Recibes un objeto como parámetro y creas otro nuevo y distinto, para que sea el atributo, pero al crearlo le pasas como parámetros al constructor los valores que trae el objeto parámetro. El resultado es que tienes un objeto nuevo pero con la misma información que traía el objeto que se pasó por parámetro.