Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: paramonso en 17 de Noviembre 2018, 19:24
-
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.
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
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
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
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 ;)
-
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