Tutoriales de Java

Java INICIO Introducción a Java Introducción a Java Sintaxis Java Comentarios Java Variables Java Tipos de datos Java Conversión de tipos de Java Operadores Java Cadenas Java Matemáticas Java Booleanos de Java Java si... si no Conmutador de Java Ciclo while de Java Java para bucle Java Pausa/Continuar Matrices de Java

Métodos de Java

Métodos de Java Parámetros del método Java Sobrecarga del método Java Alcance de Java Recursión de Java

Clases Java

programación orientada a objetos de Java Clases/Objetos Java Atributos de clase de Java Métodos de clase Java Constructores Java Modificadores de Java Encapsulación de Java Paquetes Java/API Herencia de Java Polimorfismo de Java Clases internas de Java Abstracción de Java Interfaz Java Enumeraciones de Java Entrada de usuario de Java Fecha Java Java ArrayList Java LinkedList Mapa hash de Java HashSet de Java Iterador de Java Clases contenedoras de Java Excepciones de Java Java expresión regular Subprocesos de Java Java lambda

Manejo de archivos Java

Archivos Java Java crear/escribir archivos Archivos de lectura de Java Eliminar archivos de Java

Java Cómo

Añadir dos números

Referencia Java

Palabras clave de Java Métodos de cadena de Java Métodos matemáticos de Java

Ejemplos de Java

Ejemplos de Java Compilador Java Ejercicios Java Cuestionario Java Certificado Java


Encapsulación de Java


Encapsulación

El significado de Encapsulación es asegurarse de que los datos "sensibles" estén ocultos para los usuarios. Para lograr esto, debes:

  • declarar variables/atributos de clase como private
  • proporcionar métodos públicos get y set para acceder y actualizar el valor de una private variable

Obtener y establecer

En el capítulo anterior aprendiste que privatesolo se puede acceder a las variables dentro de la misma clase (una clase externa no tiene acceso a ellas). Sin embargo, es posible acceder a ellos si proporcionamos métodos públicos de obtención y configuración .

El getmétodo devuelve el valor de la variable y el setmétodo establece el valor.

La sintaxis para ambos es que comienzan con geto set, seguido del nombre de la variable, con la primera letra en mayúscula:

Ejemplo

public class Person {
  private String name; // private = restricted access

  // Getter
  public String getName() {
    return name;
  }

  // Setter
  public void setName(String newName) {
    this.name = newName;
  }
}

Ejemplo explicado

El getmétodo devuelve el valor de la variable name.

El setmétodo toma un parámetro ( newName) y lo asigna a la namevariable. La thispalabra clave se utiliza para referirse al objeto actual.

Sin embargo, como la namevariable se declara como private, no podemos acceder a ella desde fuera de esta clase:

Ejemplo

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.name = "John";  // error
    System.out.println(myObj.name); // error 
  }
}

Si la variable se declarara como public, esperaríamos el siguiente resultado:

John

Sin embargo, cuando intentamos acceder a una privatevariable, obtenemos un error:

MyClass.java:4: error: name has private access in Person
    myObj.name = "John";
         ^
MyClass.java:5: error: name has private access in Person
    System.out.println(myObj.name);
                  ^
2 errors

En su lugar, usamos los métodos getName()y para acceder y actualizar la variable:setName()

Ejemplo

public class Main {
  public static void main(String[] args) {
    Person myObj = new Person();
    myObj.setName("John"); // Set the value of the name variable to "John"
    System.out.println(myObj.getName());
  }
}

// Outputs "John"


¿Por qué encapsulación?

  • Mejor control de los atributos y métodos de clase.
  • Los atributos de clase se pueden hacer de solo lectura (si solo usa el getmétodo) o de solo escritura (si solo usa el setmétodo)
  • Flexible: el programador puede cambiar una parte del código sin afectar otras partes
  • Mayor seguridad de los datos