Buenas, dejo aquí mi solución al ejercicio. Simple el ejercicio pero interesante lo de protected para metodos y constructores, que pueden ser nombrados como propios por las subclases o mismo package.
Clase Profesor
/**
* Clase Profesor. Ejercicio 692
*
* @author Lorenzo31
* @version 22.04.2015
*/
public class Profesor {
protected String nombre;
protected int edad;
protected int yearsConsolidados;
//Constructor
public Profesor(String nombre, int edad, int yearsConsolidados){
this.nombre = nombre;
this.edad = edad;
this.yearsConsolidados = yearsConsolidados; }
//Getters
public String getNombre(){ return nombre; }
public int getEdad(){ return edad; }
public int getYearsConsolidados(){ return yearsConsolidados; }
//Setters
public void setNombre(String nombre) { this.nombre = nombre; }
public void setEdad(int edad){ this.edad = edad; }
public void setYearsConsolidados(int yearsConsolidados){ this.yearsConsolidados = yearsConsolidados; }
//Método calculo salario base
//public double obtenerSalarioBase(){ return (725 + (yearsConsolidados * 33.25)); }
//Método mostrar datos
public String mostrarDatos(){ return ("El nombre del profesor es: " + nombre + "\n su edad es: " + edad
+ "\n sus años consolidados son: " + yearsConsolidados); }
}//cierre clase
Clase ProfesorEmerito
/**
* clase ProfesorEmerito extiende a Profesor. Ejercicio 693
*
* @author Lorenzo31
* @version 22.04.2015
*/
public class ProfesorEmerito extends Profesor {
private int yearsEmerito;
//Constructor
public ProfesorEmerito(String nombre, int edad, int yearsConsolidados, int yearsEmerito){
super(nombre, edad, yearsConsolidados);
this.yearsEmerito = yearsEmerito; }
//Setter
public void setYearsEmerito(int yearsEmerito){ this.yearsEmerito = yearsEmerito; }
//Getter
public int getYearsEmerito(){ return yearsEmerito; }
//Método sobreEscrito obtener salario base
public double obtenerSalarioBase(){ return (925 + (yearsConsolidados * 33.25) + ( yearsEmerito * 47.80 )); }
//Método mostrar datos
public String mostrarDatos(){ return (super.mostrarDatos() + "\n los años de profesor Emérito son: " + yearsEmerito); }
} //cierre clase
Clase TestProtected
/**
* Clase test ejercicio 693
*
* @author Lorenzo31
* @version 22.04.2015
*/
public class TestProtected {
public static void main (String [] args) {
Profesor profesor1 = new Profesor("Pedro Lopez", 50, 10);
ProfesorEmerito profesor2;
profesor2 = new ProfesorEmerito("Juan Gomez", 60, 20, 6);
System.out.println(profesor1.mostrarDatos());
System.out.println(profesor2.mostrarDatos());
System.out.println(profesor2.obtenerSalarioBase());
}
}
Pregunta ¿Es posible sin utilizar una invocación a super ni un método get?
Respuesta Sí
Pregunta ¿Qué ocurre si el atributo en la superclase lo declaras private?
Respuesta Dá error al compilar, indica que el acceso es private en la variable.