Foros aprenderaprogramar.com
Aprender a programar => Aprender a programar desde cero => Mensaje iniciado 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
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
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
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
Este es el salario base: 1200.9
Saludos ;)
-
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