Autor Tema: Sobreescritura métodos Java diferencia entre tipo estático y dinámico CU00690B  (Leído 2291 veces)

david82

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 10
    • Ver Perfil
Hola. Mis soluciones propuestas al ejercicio CU00690B del tutorial de programación Java con BlueJ son las siguientes:

Citar
a) ¿Un objeto de tipo estático declarado Taxi puede contener a un objeto Vehiculo en tiempo de ejecución?

Rta: Sí. Se podría hacer un casting pero causaría un código complejo de mantener si no se tiene control del mismo con instanceof.

Citar
b) ¿Un objeto de tipo estático declarado Vehiculo puede contener a un objeto Taxi en tiempo de ejecución?

Rta: Sí. Debido a que Vehículo es superclase de Taxi.

Citar
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.

Código: [Seleccionar]
public class Vehiculo2 {
private String matricula;
private int numeroDeRuedas;

public Vehiculo2() {
matricula = null;
numeroDeRuedas=4;
}

public String getMatricula(){return matricula;}
public int getNumeroDeRuedas(){return numeroDeRuedas;}
public void setMatricula(String unaMatricula){matricula = unaMatricula;}
public void setNumeroDeRuedas(int numeroDeRuedas){this.numeroDeRuedas = numeroDeRuedas;}

public String toString(){return matricula+" "+numeroDeRuedas;}

}

Citar
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.

Código: [Seleccionar]
public class Taxi extends Vehiculo2{
private String nombreDelConductor;
private int numeroDePlazas;

public Taxi(){
super();
nombreDelConductor = null;
numeroDePlazas = 1;
}

public String getnombreDelConductor(){return nombreDelConductor;}
public int getNumeroDePlazas(){return numeroDePlazas;}
public void setNumeroDelConductor(String nombreDelConductor){this.nombreDelConductor=nombreDelConductor;}
public void setNumeroDePlazas(int numeroDePlazas){this.numeroDePlazas=numeroDePlazas;}
public String toString(){return nombreDelConductor+" "+numeroDePlazas;}

}

Citar
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é?

Código: [Seleccionar]
public class TestVehiculo2 {

public static void main(String[] args) {
Vehiculo2 v1 = new Taxi();

v1.setMatricula("NKG-345");
v1.setNumeroDeRuedas(6);

System.out.println(v1.toString());
}
}

El método aplicado es el toString() de la clase Taxi(), debido a que cambia dinámicamente en tiempo de compilacion y el compilador de java considera a v1 como un tipo estático de Taxi, por lo tanto se ejecuta su propio método normalmente.
« Última modificación: 22 de Agosto 2017, 19:53 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola david82, respuestas correctas. En este hilo hay algunos comentarios de interés: https://www.aprenderaprogramar.com/foros/index.php?topic=1147.0

Saludos

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".