Foros aprenderaprogramar.com

Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: HumbertoAli en 21 de Marzo 2017, 16:25

Título: Sobreescribir métodos en Java Métodos polimorfismos. Ejercicio resuelto CU00690B
Publicado por: HumbertoAli en 21 de Marzo 2017, 16:25
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:
Código: [Seleccionar]
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:
Código: [Seleccionar]
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:
Código: [Seleccionar]
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.
Título: Re:Sobreescribir métodos en Java. Métodos polimorfismos. Ejercicio (CU00690B)
Publicado por: pedro,, en 29 de Marzo 2017, 00:10
Buenas.

El apartado a no es correcto, la respuesta sería si. Aquí te dejo un enlace donde podrás leer una buena explicación.

https://www.aprenderaprogramar.com/foros/index.php?topic=1147.msg6341#msg6341

Saludos. ;D
Título: Re:Sobreescribir métodos en Java. Métodos polimorfismos. Ejercicio (CU00690B)
Publicado por: HumbertoAli en 29 de Marzo 2017, 01:56
muchas gracias por la corrección... me había confundido