Buenas aquí otro ejercicio
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?
No
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?
Si
c) Escribe el código de una clase Vehiculo con los atributos matricula (String) y numeroDeRuedas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un vehículo.
public class Vehiculo {
String matricula;
int nRuedas;
public Vehiculo (String matricula, int nRuedas) {
this.matricula = matricula;
this.nRuedas = nRuedas;
}
public void setMatricula(String matricula) {
this.matricula = matricula;
}
public void setNRuedas (int nRuedas) {
this.nRuedas = nRuedas;
}
public String getMatricula() {return matricula;}
public int getNRuedas() {return nRuedas;}
public void mostrar() {
System.out.println ("la matrícula del vehículo es " + getMatricula() + "el número de ruedas del vehículo es " + getNRuedas());
}
}
d) Escribe el código de una clase Taxi que herede de vehículo y que además de los atributos de Vehiculo lleve un atributo adicional nombreDelConductor (String) y numeroDePlazas (int), constructor, métodos getters y setters y método toString() para mostrar la información de un Taxi.
public class Taxi extends Vehiculo {
String nombreDelConductor;
int numeroPlazas;
public Taxi (String matricula, int nRuedas, String nombreDelConductor, int numeroPlazas) {
super (matricula, nRuedas);
this.nombreDelConductor = nombreDelConductor;
this.numeroPlazas = numeroPlazas;
}
public void setNombreDelConductor (String nombreDelConductor) {
this.nombreDelConductor = nombreDelConductor;
}
public void setNumeroPlazas (int numeroPlazas) {
this.numeroPlazas = numeroPlazas;
}
public String getNombreDelConductor() {return nombreDelConductor;}
public int getNumeroPlazas() {return numeroPlazas;}
public void mostrar() {
System.out.println ("la matrícula del taxi es " + getMatricula() +"\n"+
"el número de ruedas es " +getNRuedas() + "\n" + "el nombre del conductor es " + getNombreDelConductor() +"\n"+
"el número de plazas del Taxi es " + getNumeroPlazas());
}
}
e) Escribe el código de una clase test con el método main que cree un objeto cuyo tipo es Vehiculo, instanciado como Taxi. Establece valores para sus atributos y usa el método toString(). ¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi? ¿Por qué?
public class Test {
public static void main (String [] args) {
Vehiculo t1 = new Taxi("0000CCC", 4, "manolo", 4);
t1.mostrar();
}
}
Como se dice en la unidad, el método mostrar visualiza por la pantalla el método mostrar de la subclase debido a la cercanía.