Contenido del Curso
Java Avanzado
Java Avanzado
Modificador Private
¿Cómo ocultar campos y métodos de otra clase?
Los modificadores de acceso se utilizan para controlar la visibilidad y accesibilidad de variables y métodos en Java. Permiten definir el alcance y restringir el acceso a ciertos miembros de una clase.
Ya hemos tratado los modificadores de acceso en la sección anterior. Ahora, examinemos más de cerca el modificador de acceso más utilizado: private
.
Como sabes, con el modificador de acceso private
, solo se puede acceder a un campo o método desde la clase en la que se encuentra. Veamos un ejemplo del uso del modificador private
:
Por ejemplo, si no queremos que una variable en una clase sea visible o accesible desde otra clase, podemos utilizar el modificador de acceso private
:
Main.java
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }
Hemos declarado los campos de la clase Person
como private
. Cuando intentamos inicializar el campo directamente, obtenemos un error que indica que el campo name
tiene un modificador de acceso private
y no es accesible para ser llamado o modificado en el método main.
¿Cómo inicializar un campo privado?
La forma más sencilla de evitar la protección es utilizar la inicialización a través de un constructor. Sin embargo, de esta manera, solo podemos inicializar los campos de los objetos, pero no acceder a esos campos. Veamos un ejemplo:
Main.java
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }
Pudimos inicializar el campo name
a través del constructor, pero aún no podemos acceder a este campo ni imprimirlo usando System.out.println()
. Para evitar esto, podemos sobrescribir el método toString()
para que, al llamar a System.out.println(bob);
, se muestre información sobre sus campos.
Veamos un ejemplo:
Main.java
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }
Finalmente logramos mostrar el valor del campo name
del objeto bob
. Esto se consiguió utilizando el método sobrescrito toString()
, donde implementamos la lógica para mostrar el name
.
Surge la pregunta, ¿por qué necesitamos este modificador de acceso si tenemos que escribir tanto código adicional?
A veces, en diferentes clases, existen variables con el mismo nombre, y en tales casos, es necesario ocultar las variables de estas clases para que otras clases no tengan acceso a campos innecesarios. Esto mejora considerablemente la comodidad al escribir código en general, ya que permite comprender a qué clase pertenece cada campo.
¡Gracias por tus comentarios!