Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: dferna en 13 de Abril 2017, 09:07

Título: Resolución ejercicio invocar métodos de superclases desde subclases CU00692B
Publicado por: dferna en 13 de Abril 2017, 09:07
Hola  :D

Expongo la resolución al ejercicio sobre invocar métodos de superclases desde subclases. He añadido una clase de prueba que no se pedía en el enunciado para probar el funcionamiento de la aplicación.

Clase de Test
Código: [Seleccionar]
package test;

import aplicacion.*;

public class TestSobreescrituraMetodos {

public static void main(String[] args){
ProfesorEmerito pe1 = new ProfesorEmerito("David", 30, 10, 3);
double salarioBase = pe1.obtenerSalarioBase();
System.out.println("Este es el salario base: "+salarioBase);
}
}

Superclase Profesor
Código: [Seleccionar]
package aplicacion;

public class Profesor {

private String nombre;
private int edad;
private int anosConsolidados;

//Constructor
public Profesor(){
nombre = "";
edad = 0;
anosConsolidados = 0;
}
//Constructor sobrecargado
public Profesor(String nombre, int edad, int anosConsolidados){
this.nombre = nombre;
this.edad = edad;
this.anosConsolidados = anosConsolidados;
}

//Getters and Setters
public String getNombre() {
return nombre;
}
public void setNombre(String nombre) {
this.nombre = nombre;
}
public int getEdad() {
return edad;
}
public void setEdad(int edad) {
this.edad = edad;
}
public int getAnosConsolidados() {
return anosConsolidados;
}
public void setAnosConsolidados(int anosConsolidados) {
this.anosConsolidados = anosConsolidados;
}

/**
* Método que obtiene el salario base de un profesor
*/
public double obtenerSalarioBase(){
double resultado = 725 + anosConsolidados * 33.25;
return resultado;
}
}

Subclase ProfesorEmerito
Código: [Seleccionar]
package aplicacion;

public class ProfesorEmerito extends Profesor{

private int anosEmerito;

//Constructor
public ProfesorEmerito(){
anosEmerito = 0;
}

//Constructor sobrecargado
public ProfesorEmerito(String nombre, int edad, int anosConsolidados,int anosEmerito){
super(nombre,edad,anosConsolidados);
this.anosEmerito = anosEmerito;
}

//Getters and Setters
public int getAnosEmerito() {
return anosEmerito;
}

public void setAnosEmerito(int anosEmerito) {
this.anosEmerito = anosEmerito;
}

/**
* Método que obtiene el salario base de un profesor emerito
*/
public double obtenerSalarioBase(){
double salarioBaseProfesor = super.obtenerSalarioBase();
double resultado = salarioBaseProfesor + (47.80 * anosEmerito);
return resultado;
}
}

Ejecución del programa
Citar
Este es el salario base: 1200.9

Saludos  ;)
Título: Re:Resolución ejercicio invocar métodos de superclases desde subclases CU00692B
Publicado por: Alex Rodríguez en 17 de Junio 2017, 14:09
Hola dferna, todo bien

Si quisiéramos, podríamos declarar como tipo estático Profesor y como tipo dinámico ProfesorEmerito así:

Profesor pe1 = new ProfesorEmerito("David", 30, 10, 3);

Saludos