Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
2
respuestas

[Duda] No entiendo esta pregunta

Buena noche compañeros

Esta respuesta, me queda la duda.

Gracias

Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidad

2 respuestas
solución!

¡Hola John!

La pregunta en cuestión es: ¿Cuál es una ventaja de usar atributos privados? La respuesta es: La implementación interna se puede modificar sin afectar ningún código fuera de la clase misma.

Expliquemos esto, poco a poco. Una clase tiene atributos y métodos. Estos atributos están acompañados de una palabra reservada que puede ser default, public, private, y protected, llamados también modificadores de acceso y que nos ayudan a encapsular nuestros atributos. Entonces, que nuestros atributos tengan el modificador de acceso private quiere decir que dichos atributos solo serán accesibles dentro de nuestra clase, pero no fuera de ella.

Esto quiere decir que, por ejemplo, imaginemos que tenemos una clase Gato con los atributos nombre y edad. Estos atributos son privados. Luego, en nuestra clase EntrenamientoAnimal vamos a crear una instancia de Gato, es decir, vamos a crear un objeto de tipo Gato, de esta manera:

Gato garfield = new Gato();

Y digamos que queremos establecer la edad del objeto garfield. Lo que usualmente haríamos sería lo siguiente:

garfield.edad = 5;

Pero en este caso esto no sería posible, ya que como edad es un atributo privado entonces no tendremos acceso a ese atributo desde nuestra clase EntrenamientoAnimal, tampoco tenemos acceso al atributo nombre.

¿Entonces cómo podemos acceder a estos atributos? Pues, para ello necesitamos crear los métodos Getter y Setter dentro de nuestra clase Gato para que desde fuera de la clase podamos tener acceso a estos atributos.

public int getEdad(){
    return this.edad;
}

public String getNombre(){
    return this.nombre;
}

public void setEdad(int edad){
    this.edad = edad;
}

public void setNombre(String nombre){
    this.nombre = nombre;
}

Luego ya podemos acceder a dichos elementos desde nuestra clase EntrenamientoAnimal:

garfield.setEdad(5);
garfield.setNombre("Garfield");

System.out.println("La edad de Garfield es: " + garfield.getNombre());

De este modo podemos ver que no tenemos un acceso directo a los atributos de la clase Gato desde fuera de su clase, por lo que podemos estar seguros de que no podrán modificar esta implementación desde fuera, nunca. Nuestros atributos están protegidos.

Muchas gracias Jorge, por aclararme la duda.