Foros aprenderaprogramar.com

Aprender a programar => Aprender a programar desde cero => Mensaje iniciado por: Lorenzo31 en 26 de Abril 2015, 20:05

Título: CU00693B public, private y protected Java.Tipos de modificadores de acceso.
Publicado por: Lorenzo31 en 26 de Abril 2015, 20:05
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

Código: [Seleccionar]


/**
 * 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

Código: [Seleccionar]


/**
 * 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

Código: [Seleccionar]

/**
 * 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

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.
Título: Re:CU00693B public, private y protected Java.Tipos de modificadores de acceso.
Publicado por: javi in the sky en 27 de Abril 2015, 18:30
Hola, código correcto y respuestas correctas. Lo veo todo bien!

Es interesante comprender el significado de los modificadores de acceso Java y también saber por qué se usan normalmente de una forma u otra.

Saludos!