Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: umadara en 16 de Julio 2016, 13:33

Título: Sobreescribir métodos en Java. Tipo estático y dinámico. Ligadura. CU00690B
Publicado por: umadara en 16 de Julio 2016, 13:33
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.

Código: [Seleccionar]
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.

Código: [Seleccionar]
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é?


Código: [Seleccionar]
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.
Título: Re:Sobreescribir métodos en Java. Tipo estático y dinámico. Ligadura. CU00690B
Publicado por: Ogramar en 21 de Julio 2016, 12:36
Buenas

Para la pregunta a) la respuesta es sí

También tienes que tener en cuenta que el método que tú has sobreescrito es mostrar() y no toString() como indicaba el ejercicio.

Puedes ver la explicación y un modelo de solución en - > https://www.aprenderaprogramar.com/foros/index.php?topic=1147.0

Salu2
Título: Re:Sobreescribir métodos en Java. Tipo estático y dinámico. Ligadura. CU00690B
Publicado por: umadara en 21 de Julio 2016, 13:53
Buenas Ogramar (tu nick me lo corrige el corrector por agramar  >:( >:( ;D ;D), en cuanto a la primera pregunta decir que debió ser un error mío, hago los ejercicios bastante rápido y no tiene lógica lo que contesté. En cuanto a los del método que sobreescribí decir  que lo llamé mostar xk pensaba que mostraba mejor lo que hacía no por otra razón.
Sin más, como siempre agradecer tú respuesta, ya que me hace darme cuenta de mis errores y evolucionar, muchas gracias, saludos.