Encapsulación
Encapsulación
El significado de encapsulación es asegurarse de que los datos sensibles estén ocultos de los usuarios, para poder lograr esto debemos declarar las variables y los atributos como private
y proporcionar acceso publico y establecer métodos para acceder y actualizar el valor de na variable private
Obtener y configurar
En otras publicaciones vimos que las variables declaradas como private
solo pueden ser accedidas dentro de la misma clase, sin embargo, es posible acceder a ellas si proporcionamos métodos públicos de obtención y configuración.
La sintaxis de ambas es que empiezan por get
o set
, seguidas del nombre de la variable, con la primera letra en mayúscula.
1
2
3
4
5
6
7
8
9
10
11
12
13
public class persona{
private String nombre; // private = acceso restringido
// get
public String getnombre() {
return nombre;
}
// set
public void setnombre(String nuevoNombre){
this.nombre = nuevoNombre;
}
}
El método get
devuelve el valor de la variable name
El método set
toma un parámetro (nuevoNombre
) y lo asigna a la variable nombre
. Después la utilizamos la palabra clave this
para referirnos al objeto actual.
Sin embargo, como nombre
esta declarado como private
, no podremos acceder a ella fuera de la clase.
1
2
3
4
5
6
7
public class main{
public static void main(String[] args){
persona miObjeto = new persona();
miObjeto.nombre = "Alex"; // Error
System.out.println(miObjeto.nombre); // Error
}
}
Si la variable estuviera declarada como public
, nos devolvería: Alejandro
, pero como esta declarada como private
, obtendremos un error.
Para evitar este error utilizaremos getNombre()
y setNombre()
para poder acceder y actualizar la variable.
1
2
3
4
5
6
7
public class main{
public static void main(String[] args){
persona miObjeto = new persona();
miObjeto.setNombre("Alex");
System.out.println(miObjeto.getNombre());
}
}
¿Por qué encapsular?
- Mejor control de los atributos y métodos de clase
- Los atributos de clase se pueden hacer de solo lectura (si solo utilizamos
get
) o de solo escritura (si solo utilizamosset
) - Flexible, el programador puede cambiar una parte del código sin afectar a otras partes
- Mayor seguridad de los datos