Modificadores de acceso público vs privado en Java

Cada vez que escribimos nuestras clases, debemos proporcionar cierta información sobre nuestras clases a la JVM, como si se puede acceder a esta clase desde cualquier lugar o no, si la creación de clases secundarias es posible o no, si la creación de objetos es posible o no, etc. podemos especifique esta información utilizando una palabra clave adecuada en java denominada modificadores de acceso. Por lo tanto, los modificadores de acceso se utilizan para establecer la accesibilidad de clases, métodos y otros miembros.

Modificadores de acceso público:

Si una clase se declara como pública, podemos acceder a esa clase desde cualquier lugar.

En el siguiente ejemplo, estamos creando un paquete pack1 dentro de ese paquete, declaramos una clase A que es pública y dentro de esa clase, declaramos un método m1 que también es público. Ahora creamos otro paquete pack2 y dentro de ese pack2 importamos pack1 y declaramos una clase B y en el método principal de clase B creamos un objeto de tipo clase A e intentamos acceder a los datos del método m1.

Java

// Java program to showcase the example
// of public access modifier
  
// import required packages
import java.io.*;
import java.util.*;
  
// declaring a public class
public class A {
  
    // declaring method m1
    public void m1() { System.out.println("GFG"); }
}
  
class B {
    
    // main method
    public static void main(String[] args)
    {
        // creating an object of type class A
        A a = new A();
        
        // accessing the method m1()
        a.m1();
    }
}
Producción

GFG

Si la clase A no es pública al compilar la clase B, obtendremos un error en tiempo de compilación que dice pack1. A no es público en el paquete 1 y no se puede acceder desde el paquete externo.

De manera similar, si un miembro, método o interfaz se declara como público, podemos acceder a ese miembro desde cualquier lugar.

Modificadores de acceso privado:

Este modificador no se aplica a clases o interfaces de nivel superior. Solo es aplicable a constructores, métodos y campos dentro de las clases. 

Si una variable, un método o un constructor se declaran privados, solo podemos acceder a ellos desde dentro de la clase, es decir, desde fuera de la clase no podemos acceder a ellos.

Java

// Java program to showcase the example
// of private access modifier
  
// import required packages
import java.io.*;
  
import java.util.*;
  
// helper class
class A {
    
    // helper method
    private void m1() { System.out.println("GFG"); }
}
  
// driver class
class B {
    
    // main method
    public static void main(String[] args)
    {
        // creating an object of type class A
        A a = new A();
        
        // accessing the method m1()
        a.m1();
    }
}

Modificador de acceso público Modificador de acceso privado
Este modificador se aplica tanto a las clases de nivel superior como a las interfaces. Este modificador no se aplica tanto a las clases de nivel superior como a las interfaces.
Se puede acceder a los miembros públicos desde la clase secundaria del mismo paquete. No se puede acceder a los miembros privados desde la clase secundaria del mismo paquete.
Se puede acceder al miembro público desde una clase no secundaria del mismo paquete. No se puede acceder a los miembros privados desde una clase no secundaria del mismo paquete.
Se puede acceder a los miembros públicos desde la clase secundaria del paquete externo. No se puede acceder a los miembros privados desde la clase secundaria del paquete externo.
Se puede acceder a los miembros públicos desde la clase no secundaria del paquete externo. No se puede acceder a los miembros privados desde una clase no secundaria de un paquete externo.
El modificador público es el modificador más accesible. El modificador privado es el modificador más restringido.
El modificador público es el modificador recomendado para el método. El modificador privado es el modificador recomendado para miembros de datos.

Publicación traducida automáticamente

Artículo escrito por mroshanmishra0072 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *