En Java, público y privado son palabras clave que se conocen como modificador de acceso o especificador . Restringe el alcance o la accesibilidad de una clase, constructor , variables , método s y miembros de datos. Depende de cuál se aplique. Java proporciona cuatro tipos de modificadores de acceso: público, privado, protegido , y por defecto . Pero en esta sección, discutiremos sólo dos públicos y privados, y también discutiremos los diferencia entre especificador de acceso público y privado con ejemplo.
Los modificadores de acceso controlan si otras clases pueden usar un campo particular o invocar un método particular. Java Proporciona dos niveles de control de acceso:
La siguiente tabla muestra el nivel de acceso a los miembros permitido por los modificadores público y privado.
c# contiene cadena
¿Aún no tienes claras las diferencias entre ambos? Permítanme mostrarles una figura que demuestra cómo los niveles de acceso afectan la visibilidad. La siguiente figura muestra los dos paquetes. p1 y p2 . Cada paquete contiene dos clases. Demostración1 y Demostración2 (en el paquete p1), y Demostración3 y Demostración4 (en el paquete p2).
La siguiente tabla describe la visibilidad de las clases si las hacemos públicas y privadas una por una. En la figura anterior, Demo1 es la única clase visible para cada modificador de acceso.
Discutamoslo en detalle.
Modificador de acceso público
Se puede especificar utilizando el público palabra clave. Su alcance o accesibilidad es el más amplio entre otros especificadores de acceso. Se puede acceder a las variables, clases y métodos declarados como públicos desde cualquier parte del programa. No impone restricciones sobre el alcance de los datos públicos de los miembros. Si declaramos métodos y clases como públicos, también violan el principio de encapsulación . También podemos usarlo con las clases de nivel superior.
Usemos el especificador de acceso privado en un programa java para un mejor entendimiento.
Demo1.java
css negrita
package p1; public class Demo1 { public void show() { System.out.println('Javatpoint'); } }
Demo2.java
package p2; import p1.*; class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); obj.show(); } }
Producción
Javatpoint
Modificador de acceso privado
Es lo opuesto al modificador público. Se puede especificar utilizando el privado palabra clave seguida del nombre de la clase (aplicado solo en clases anidadas) o nombre del método o miembro de datos. No podemos utilizar el especificador de acceso privado con las clases de nivel superior o interfaces . Solo se puede acceder a las variables, métodos y clases declaradas como privadas en la clase en la que están declaradas o heredando las clases principales. Es el especificador de acceso más restringido en Java. Es la forma más elevada de encapsulación.
infierno de devolución de llamada en javascript
- No podemos anular los métodos que se declaran como privados.
- Si usamos el modificador privado con el constructor, evitamos que se subclase.
- Oculta las clases de las otras clases dentro del mismo paquete .
Utilicemos el especificador de acceso privado en un programa Java para una mejor comprensión.
En el siguiente ejemplo, hemos declarado dos clases: Demo1 y Demo2. En la clase Demo1, hemos definido un método espectáculo() como privado. La clase Demo2 contiene el método main() en el que hemos creado un objeto de la clase Demo1. Después de eso estamos intentando acceder al método privado de la clase Demo1 desde la clase Demo2, eso no es posible. Pero aún así ejecutaremos el programa para ver qué error muestra.
class Demo1 { //defining method as private private void show() { System.out.println('Javatpoint'); } } public class Demo2 { public static void main(String args[]) { Demo1 obj = new Demo1(); //trying to access private method of the class Demo1 obj.show(); } }
Cuando ejecutamos el programa anterior, muestra el siguiente error:
Diferencia entre especificador de acceso público y privado en Java
La principal diferencia entre modificadores públicos y privados es su visibilidad. Java clasifica la visibilidad para los miembros de la clase de la siguiente manera:
- Subclases en el mismo paquete.
- No subclases en el mismo paquete.
- Subclases en diferentes paquetes.
- Clases ni en el mismo paquete ni subclases.
¿Cuál deberíamos usar?
Deberíamos usar el modificador de acceso público si queremos que el método o propiedad sea visible desde cualquier lugar, otras clases e instancias del objeto. Utilice el modificador de acceso privado si desea que el método o propiedad sea visible solo en su propia clase. Evite los campos públicos excepto las constantes.