Foros aprenderaprogramar.com

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

Título: Palabra clave super: invocar métodos de superclases desde subclases CU00692B
Publicado por: umadara en 18 de Julio 2016, 16:44
Buenas, como siempre, aquí os dejo otro ejercicio, el CU00692B del taller práctico de programación Java desde cero, para que podéis aconsejarme sobre como lo he resuelto.

Código: [Seleccionar]
public class Profesor{
   
    String nombre;
    int edad;
    int añosConsolidados;
   
    public Profesor (String nombre, int edad, int añosConsolidados) {
       
        this.nombre = nombre;
        this.edad = edad;
        this.añosConsolidados = añosConsolidados;
   
    }
   
    public void nombre (String nombre) {
       
        this.nombre = nombre;
   
    }
   
    public void edad (int edad) {
       
        this.edad = edad;
   
    }
   
    public void añosConsolidados (int añosConsolidados) {
       
        this.añosConsolidados = añosConsolidados;
   
    }
   
    public String getNombre() {return nombre;}
   
    public int getEdad() {return edad;}
   
    public int añosConsolidados() {return añosConsolidados;}
   
    public double obtenerSalarioBase() {
       
        double salarioBase;
       
        salarioBase = (725 + (añosConsolidados * 33.25));
       
        System.out.println ("El salario es = " + salarioBase + "€");
       
        return salarioBase;
   
    }
}

Código: [Seleccionar]
public class ProfesorEmerito extends Profesor {
   
    int añosEmerito;
   
    public ProfesorEmerito (String nombre, int edad, int añosConsolidados, int añosEmerito) {
       
        super (nombre, edad, añosConsolidados);
       
        this.añosEmerito = añosEmerito;
   
    }
   
    public void añosEmerito (int añosEmerito) {
       
        this.añosEmerito= añosEmerito;
   
    }
   
    public int getAñosEmerito() {return añosEmerito;}
   
    public double obtenerSalarioBase() {
       
        double salarioBase;
       
        salarioBase = super.obtenerSalarioBase() + (47.8 * añosEmerito);
       
        System.out.println ("el salario vase es " + salarioBase + "€");
       
        return salarioBase;
    }
}

Sin más, un saludo y agradecer como siempre vuestra colaboración.
Título: Re:Palabra clave super: invocar métodos de superclases desde subclases CU00692B
Publicado por: Mario R. Rancel en 21 de Julio 2016, 13:09
Buenas tardes umadara está todo bien

Como observación en el método

Código: [Seleccionar]
    public double obtenerSalarioBase() {
       
        double salarioBase;
       
        salarioBase = (725 + (añosConsolidados * 33.25));
       
        System.out.println ("El salario es = " + salarioBase + "€");
       
        return salarioBase;
   
    }

No es conveniente introducir System.out.println ("El salario es = " + salarioBase + "€");, decimos que cada método debe tener una finalidad única que en este caso sería devolver el salarioBase con un return. Si quieres mostrar algo por pantalla deberías hacerlo desde otro lugar (por ejemplo desde la clase con el método main).

Lo mismo ocurre en este método en la subclase.

Saludos
Título: Re:Palabra clave super: invocar métodos de superclases desde subclases CU00692B
Publicado por: umadara en 21 de Julio 2016, 14:41
Muchas gracias Mario, lo tendré en cuenta para futuras resoluciones.
Un saludo