Hola Jordi, quizás está algo confuso porque en el curso se utilizan en distintas partes dos constructores y dos formas diferentes para la clase Taxi. Por un lado el primer constructor que aparece en un ejemplo es este:
//Constructor1 sin parámetros
public Taxi () {
ciudad = “México D.F.”;
matricula = "";
distrito = "Desconocido";
tipoMotor = 0;
} //Cierre del constructor … el código continúa …
Por otro lado en otro ejemplo se usa este constructor en otra definición de la clase Taxi:
//Constructor 2: cuando se cree un objeto taxi se ejecutará el código que incluyamos en el constructor
public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {
ciudad = "México D.F.";
matricula = valorMatricula;
distrito = valorDistrito;
tipoMotor = valorTipoMotor;
} //Cierre del constructor
Como ves se trata de dos constructores distintos: en un caso para crear un objeto taxi no hace falta indicar nada mientras que en el constructor 2 hace falta decir, cuando creemos un objeto Taxi, cuáles son el valorMatricula, valorDistrito y valorTipoMotor.
También según el ejemplo de la clase Taxi que usemos hay unos métodos u otros.
El error que te está dando es porque estás haciendo una llamada a un constructor que no tienes definido (estás usando el otro). Sólo puedes llamar a los constructores que tienes definidos y a los métodos que tienes definidos.
La solución más rápida que veo es tener los dos constructores en la clase Taxi que uses para que no te dé error (una clase puede tener varios constructores).
Para no liarnos, te indico los códigos de las clases de partida que debes usar:
Clase Taxi:
/* Ejemplo - aprenderaprogramar.com */
//Esta clase representa un taxi. -- > Comentario general que puede incluir: cometido, autor, versión, etc…
public class Taxi { //El nombre de la clase
String ciudad; //Ciudad de cada objeto taxi
String matricula; //Matrícula de cada objeto taxi
String distrito; //Distrito asignado a cada objeto taxi
int tipoMotor; //tipo de motor asignado a cada objeto taxi. 0 = desconocido, 1 = gasolina, 2 = diesel
//Constructor: cuando se cree un objeto taxi se ejecutará el código que incluyamos en el constructor
public Taxi () {
ciudad = "México D.F.";
matricula = "";
distrito = "Desconocido";
tipoMotor = 0;
} //Cierre del constructor … el código continúa …
public Taxi (String valorMatricula, String valorDistrito, int valorTipoMotor) {
ciudad = "México D.F.";
matricula = valorMatricula;
distrito = valorDistrito;
tipoMotor = valorTipoMotor;
} //Cierre del constructor
//Método para establecer la matrícula de un taxi
public void setMatricula (String valorMatricula) {
matricula = valorMatricula; //La matrícula del objeto taxi adopta el valor que contenga valorMatricula
} //Cierre del método
//Método para establecer el distrito de un taxi
public void setDistrito (String valorDistrito) {
distrito = "Distrito " + valorDistrito; //El distrito del objeto taxi adopta el valor indicado
} //Cierre del método
public void setTipoMotor (int valorTipoMotor) {
tipoMotor = valorTipoMotor; //El tipoMotor del objeto taxi adopta el valor que contenga valorTipoMotor
} //Cierre del método
//Método para obtener la matrícula del objeto taxi
public String getMatricula () { return matricula; } //Cierre del método
//Método para obtener el distrito del objeto taxi
public String getDistrito () { return distrito; } //Cierre del método
//Método para obtener el tipo de motor del objeto taxi
public int getTipoMotor () { return tipoMotor; } //Cierre del método
} //Cierre de la clase
Clase Persona:
/* Ejemplo - aprenderaprogramar.com */
//Ejemplo de clase con dos constructores y un método
public class Persona {
private String nombre;
private int edad;
public Persona (String nombrePersona) { //CONSTRUCTOR 1
nombre = nombrePersona;
edad = 0; }
public Persona () { //CONSTRUCTOR2
nombre = "";
edad = 0; }
public String getNombre () { return nombre; } //Cierre del método
} //Cierre de la clase
Clase TaxiCond:
/* Ejemplo - aprenderaprogramar.com */
//Ejemplo de clase que utiliza tipos definidos en otras clases (usa otras clases)
public class TaxiCond {
private Taxi vehiculoTaxi;
private Persona conductorTaxi;
//Constructor
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 void setMatricula (String valorMatricula) { vehiculoTaxi.setMatricula(valorMatricula); }
//Método que devuelve la información sobre el objeto TaxiCond
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 +
" Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;
System.out.println (datosTaxiCond);
return datosTaxiCond;
} //Cierre del método
} //Cierre de la clase
Ahora cambiamos el constructor de la clase TaxiCond y dejamos la clase así:
/* Ejemplo - aprenderaprogramar.com */
//Ejemplo de clase que utiliza tipos definidos en otras clases (usa otras clases)
public class TaxiCond {
private Taxi vehiculoTaxi;
private Persona conductorTaxi;
/* Ejemplo - aprenderaprogramar.com */
//Constructor
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); }
//Método que devuelve la información sobre el objeto TaxiCond
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 +
" Distrito: " + distrito + " Tipo de motor: " + cadenaTipoMotor;
System.out.println (datosTaxiCond);
return datosTaxiCond;
} //Cierre del método
} //Cierre de la clase
A partir de ahí continúa tal y como se indica en el curso (crear las instancias, etc.)