Autor Tema: Para qué sirve super en Java: invocar métodos de superclases herencia CU00692B  (Leído 1839 veces)

paramonso

  • Intermedio
  • ***
  • Mensajes: 241
  • El ignorante afirma, el sabio duda y reflexiona.
    • Ver Perfil
Hola. Ejercicio CU00692B del curso pdf de programación java desde cero.
Palabra clave super: invocar métodos de superclases desde subclases en Java. Ejemplo básico.

Citar
EJERCICIO

Considera que estás desarrollando un programa Java donde trabajas con la superclase Profesor y la subclase ProfesorEmerito. Crea el código para estas clases que cumpla los requisitos que indicamos.

Como atributos de la superclase tendremos nombre (String), edad (int) y añosConsolidados (int). Un método de la superclase será double obtenerSalarioBase () que obtendrá el salario base como (725 + el número de años consolidados multiplicado por 33.25).

En la subclase se trabajará con el campo adicional añosEmerito. Queremos hacer lo siguiente: sobreescribir el método obtenerSalarioBase () en la subclase para calcular el salario base del profesor emérito invocando mediante la palabra clave super al cálculo del salario base de Profesor y añadiéndole la cantidad de (47.80 * añosEmerito).


Clase Profesor
Código: [Seleccionar]
public class Profesor
{
    // instance variables -
    private String nombre;
    private int edad;
    private int añosConsolidados;

    /**
     * Constructores
     */

    public Profesor ()
    {
        // initialise instance variables
        nombre="";
        edad=0;
        añosConsolidados=0;
    }
    //Constructor sobrecargado
    public Profesor (String nombre,int edad,int añosConsolidados)
    {
        // initialise instance variables
        this.nombre=nombre;
        this.edad=edad;
        this.añosConsolidados=añosConsolidados;
    }
    //metodos get 
    public String getNombre() {
        return nombre;
    }

    public int getEdad() {
        return edad;
    }

    public int getAñosConsolidados() {
        return añosConsolidados;
    }
    //metodos set
    public void setNombre(String nombre) {
        this.nombre = nombre;
    }
public void setEdad(int edad) {
        this.edad = edad;
    }
    public void setAñosConsolidados(int añosConsolidados) {
        this.añosConsolidados =añosConsolidados;
    }
    public double obtenerSalarioBase(){
        double salarioBase;
        salarioBase=725+añosConsolidados*33.25;
        return salarioBase;
    }

}

Clase ProfesorEmerito
Código: [Seleccionar]
public class ProfesorEmerito extends Profesor
{
    // instance variables -
    int añosEmeritos;
    /**
     * Constructores
     */

    public ProfesorEmerito()
    {
        añosEmeritos=0;

    }
    //Constructor sobrecargado
    public ProfesorEmerito(String nombre,int edad,int añosConsolidados,int añosEmeritos)
    {
        super(nombre,edad,añosConsolidados);
        this.añosEmeritos=añosEmeritos;
    }

    public int getAñosEmeritos() {
        return añosEmeritos;
    }
    //metodos set
    public void setAñosEmeritos(int añosEmeritos) {
        this. añosEmeritos = añosEmeritos;
    }

    public double obtenerSalarioBase(){
        double salarioBase=(super.obtenerSalarioBase()+(47.80 * añosEmeritos));
        return salarioBase;
       
    }
}

TestSobreescribirMetodos
Código: [Seleccionar]
public class TestSobreescribirMetodos
{
    public static void main(String[] args){
        ProfesorEmerito profeEmerito= new ProfesorEmerito("Jose Marquez de Vicente",45,15,10);
        double salarioBaseCalculado=profeEmerito.obtenerSalarioBase();
        System.out.print("El salario Base Calculado del Profesor: "+profeEmerito.getNombre()+"\n"+
        "con una Edad de :"+profeEmerito.getEdad()+" años\n"+
        "Con "+profeEmerito.getAñosConsolidados()+ " años Consolidados\n"+
        "y con "+profeEmerito.getAñosEmeritos()+" años Emeritos\n"+
        "es de :"+salarioBaseCalculado+" Euros");
   
    }
}

Graxies ;)
« Última modificación: 13 de Agosto 2019, 20:03 por Ogramar »

Ogramar

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2660
    • Ver Perfil
Buenas, para quien revise este ejercicio, está correcto. Se puede comprobar cómo se ha utilizado la herencia para reutilizar código invocando a super.

Salu2

 

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