Autor Tema: Java Resolución ejercicio sobreecribir métodos tipo estático y dinámico CU00690B  (Leído 2066 veces)

dferna

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Hola  ;)

Expongo la resolución al ejercicio CU00690B del taller de programación Java con IDE Bluej sobre los tipos estáticos, dinámicos y la sobreescritura de métodos.

El ejercicio en primer lugar plantea 2 preguntas:

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

Un objeto de tipo estático Taxi no puede contener un objeto Vehiculo en tiempo de ejecución, porque su tipo dinámico (Vehiculo) es la superclase de Taxi.

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

Un objeto de tipo estático Vehiculo si puede contener un objeto Taxi en tiempo de ejecución, porque su tipo dinámico (Taxi) es subclase de Vehiculo.


Código fuente ejercicio:

Clase Test
Código: [Seleccionar]
package aplicacion;

import vehiculo.*;

public class Test {

public static void main(String[] args) {

Vehiculo v1 = new Taxi();


v1.setMatricula("0396FKX");
v1.setNumeroDeRuedas(4);
System.out.println(v1.toString());

}

}


Superclase Vehiculo

Código: [Seleccionar]
package vehiculo;

public class Vehiculo {

private String matricula;
private int numeroDeRuedas;

//Constructor
public Vehiculo(){

}

//Getters and Setters
public String getMatricula(){
return matricula;
}

public void setMatricula(String valorMatricula){
matricula = valorMatricula;
}

public int getNumeroRuedas(){
return numeroDeRuedas;
}

public void setNumeroDeRuedas(int valorNumeroDeRuedas){
numeroDeRuedas = valorNumeroDeRuedas;
}

public String toString(){
return "Información del vehículo: Matrícula: "+matricula+" Número de ruedas: "+numeroDeRuedas;
}
}


Subclase Taxi

Código: [Seleccionar]
package vehiculo;

public class Taxi extends Vehiculo{

private String numeroDelConductor;
private int numeroDePlazas;

//Getters and Setters
public String getNumeroDelConductor() {
return numeroDelConductor;
}
public void setNumeroDelConductor(String numeroDelConductor) {
this.numeroDelConductor = numeroDelConductor;
}
public int getNumeroDePlazas() {
return numeroDePlazas;
}
public void setNumeroDePlazas(int numeroDePlazas) {
this.numeroDePlazas = numeroDePlazas;
}

//Método toString sobreescrito
public String toString(){
return "Información del taxi: Número del conductor: "+numeroDelConductor+" Número de plazas: "+numeroDePlazas;
}
}


Ejecución del programa

Citar
Información del taxi: Número del conductor: null Número de plazas: 0

Preguntas:

Citar
¿Qué método toString() resulta de aplicación, el propio de la clase Vehiculo o el propio de la clase Taxi? ¿Por qué?

El método toString() que se ejecuta es el de la clase Taxi, esto es debido a que en tiempo de ejecución los métodos que se ejecutan dan preferencia al tipo dinámico que en este caso es Taxi.

Saludos  :)
« Última modificación: 17 de Junio 2017, 14:04 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola dferna

Para la primera pregunta la respuesta es sí, puedes ver la explicación en https://www.aprenderaprogramar.com/foros/index.php?topic=1147.0

La segunda pregunta está correcta, la respuesta es sí

El código y respuesta a la pregunta sobre el código también está correcta

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