Autor Tema: Java solución ejercicio modificadores acceso para qué sirve protected CU00693B  (Leído 2494 veces)

dferna

  • Sin experiencia
  • *
  • Mensajes: 25
    • Ver Perfil
Hola  ;D

Expongo la resolución al ejercicio sobre los modificadores de acceso, CU00693B del tutorial de desarrollo de aplicaciones con Java con IDE BlueJ


Clase de test TestModificadoresAcceso

Código: [Seleccionar]
package test;

import aplicacion.*;

public class TestModificadoresAcceso {

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

Código: [Seleccionar]
package aplicacion;

public class Profesor {

protected String nombre;
protected int edad;
protected 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;
}
}


Subclase ProfesorEmerito que extiende de Profesor

Código: [Seleccionar]
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 = 925 + anosConsolidados * 33.25 + 47.80 * anosEmerito;
return resultado;
}
}


Ejecución de la aplicación

Citar
Este es el salario base: 1400.9


Preguntas

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? ¿Qué ocurre si el atributo en la superclase lo declaras private?

Sí es posible acceder a la propiedad añosConsolidados desde la subclase ya que su modificador de acceso es protected, si el atributo lo declarara como private tendría que utilizar el método get para acceder al valor de la propiedad.

Saludos  :D
« Última modificación: 17 de Junio 2017, 14:13 por Alex Rodríguez »

Alex Rodríguez

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2050
    • Ver Perfil
Hola dferna todo correcto

Podríamos haber declarado Profesor pe1 = new ProfesorEmerito("David", 30, 10, 3); donde el tipo estático es Profesor y el tipo dinámico ProfesorEmerito

Saludos

 

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".