Autor Tema: Ejercicio! entrega CU00693B tipos de modificadores de acceso en java.  (Leído 3182 veces)

Jorge lopez

  • Sniper
  • Intermedio
  • ***
  • APR2.COM
  • Mensajes: 248
  • @SniperOfElite
    • Ver Perfil
 Ejercicio:
Citar
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).

Pregunta
Citar
Intenta 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?
Respuesta
Puesto 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:
Código: [Seleccionar]
@Override public double obtenerSalarioBase()
    {
      añosConsolidados = 10;
      return  925 + (añosConsolidados * 33.25) + (47.80 * añosEmerito);
    }
Pregunta
Citar
¿Qué ocurre si el atributo en la superclase lo declaras private?
Respuesta
En 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!
« Última modificación: 09 de Septiembre 2014, 08:09 por Alex Rodríguez »
while(estesVivo)
{
  aprende();
  ayuda();
  enseña();
}
if(mueres){teRecordaran();}

dongo

  • Intermedio
  • ***
  • Mensajes: 177
    • Ver Perfil
Re:Ejercicio! entrega CU00693B TIPOS DE MODIFICADORES DE ACCESO EN JAVA.
« Respuesta #1 en: 08 de Septiembre 2014, 18:03 »
Totalmente correcto. Solo una cosita, la anotacion @Override, se suele definir en la linea anterior a la signatura del método, quedaría así... por claridad:

Código: [Seleccionar]
@Override
public double obtenerSalarioBase()
{
      añosConsolidados = 10;
      return  925 + (añosConsolidados * 33.25) + (47.80 * añosEmerito);
}

No ahorrréis en lineas, no os vais a quedar sin folio...XDD y queda mucho mas claro, ya que de la manera que lo has creado, parece como si el @override fuera parte de la signatura del método, jeje.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".