Buenas aca les dejo mis respuestas planteadas al ejercicio CU00690B del curso de programación aprenda Java con BlueJ.
Responde a las siguientes preguntas:
Supongamos la superclase Vehiculo que representa a cualquier tipo de vehículo y la subclase Taxi que representa a un tipo de vehículo concreto.
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?
R: no, no puede
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?
R: 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.
R:
public class Vehiculo1 {
private String matricula;
private int numeroDeRuedas;
public Vehiculo1(){
matricula = "";
numeroDeRuedas = 0;
}
public Vehiculo1(String matricula, int numeroDeRuedas){
this.matricula = matricula;
this.numeroDeRuedas = numeroDeRuedas;
}
public void setMatricula(String matricula){
this.matricula = matricula;
}
public void setNumeroDeRuedas(int ruedas){
this.numeroDeRuedas = ruedas;
}
public String getMatricula(){
return matricula;
}
public int getNumeroDeRuedas(){
return numeroDeRuedas;
}
public String toString(){
String infor;
infor = "La matricula del vehiculo es: "+matricula+"\nEl numero de ruedas: "+numeroDeRuedas;
return infor;
}
}
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.
R:
public class Taxi extends Vehiculo1 {
private String nombreDelConductor;
private int numeroDePlazas;
public Taxi(){
super();
nombreDelConductor = "";
numeroDePlazas = 0;
}
public Taxi(String matricula, int numeroDeRuedas, String nombre, int numeroDePlazas){
super(matricula, numeroDeRuedas);
this.nombreDelConductor = nombre;
this.numeroDePlazas = numeroDePlazas;
}
public void setNombreDelConductor(String nombre){
this.nombreDelConductor = nombre;
}
public void setNumeroDePlazas(int numero){
this.numeroDePlazas = numero;
}
public String getNommbreDelConductor(){
return nombreDelConductor;
}
public int getNumeroDePlazas(){
return numeroDePlazas;
}
public String toString(){
String taxi = super.toString()+"\nNombre del conductor: "+nombreDelConductor+"\nNumero de plazas: "+numeroDePlazas;
return taxi;
}
}
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é?
R:
public class TestTaxi {
public static void main(String[]args){
Vehiculo1 miVehiculo = new Taxi("HGF756",4,"Humberto",10);
System.out.println("Datos del taxista: ");
System.out.println(miVehiculo.toString());
}
}
¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi? ¿Por qué?
R: el metodo toString() que resulta es el de la clase Taxi ya que en tiempo de ejecución Java está constantemente “buscando” el método que corresponda en función del tipo dinámico.