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)
declarados como protected.
En la subclase se trabajará con el campo adicional añosEmerito declarado como private.
Un método de la subclase será double obtenerSalarioBase () que obtendrá el salario base como (925 +
añosConsolidados * 33.25 + 47.80 * añosEmerito).
PreguntaIntenta acceder directamente al campo añosConsolidados desde la subclase (como si fuera un campo
más de la subclase) para implementar este método. ¿Es posible sin utilizar una invocación a super ni un
método get?
RespuestaPuesto que la variable añosConsolidados esta declarada con el modificador de acceso "protected"
(acceso disponible para las subclases de superclases y clases que usan otras clases en un mismo package)
si es posible acceder directamente a dicha variable, un ejemplo aceptable seria declarar el siguiente método en una subclase de la superclase Profesor:
@Override public double obtenerSalarioBase()
{
añosConsolidados = 10;
return 925 + (añosConsolidados * 33.25) + (47.80 * añosEmerito);
}
Pregunta¿Qué ocurre si el atributo en la superclase lo declaras private?
RespuestaEn dicho caso, al intentar compilar el anterior método en una subclase de la superclase Profesor, obtendríamos el siguiente error en compilación:
"añosConsolidados has private access in Profesor" indicando que la variable añosConsolidados esta definida con el modificador de acceso "private"
(acceso exclusivo de uso de esta variable en su clase padre)
por tanto, ni subclases de la superclase Profesor, ni otras clases que usen la clase Profesor, tienen acceso a dicha variable.
Saludos!