logo

Modificadores de acceso en Java

  1. Modificador de acceso privado
  2. Papel del constructor privado
  3. Modificador de acceso predeterminado
  4. Modificador de acceso protegido
  5. Modificador de acceso público
  6. Modificador de acceso con anulación de método

Hay dos tipos de modificadores en Java: modificadores de acceso y modificadores de no acceso .

Los modificadores de acceso en Java especifican la accesibilidad o el alcance de un campo, método, constructor o clase. Podemos cambiar el nivel de acceso de campos, constructores, métodos y clases aplicando el modificador de acceso.

Hay cuatro tipos de modificadores de acceso a Java:

    Privado: El nivel de acceso de un modificador privado es solo dentro de la clase. No se puede acceder desde fuera de la clase.Por defecto: El nivel de acceso de un modificador predeterminado está solo dentro del paquete. No se puede acceder a él desde fuera del paquete. Si no especifica ningún nivel de acceso, será el predeterminado.Protegido: El nivel de acceso de un modificador protegido está dentro del paquete y fuera del paquete a través de la clase secundaria. Si no crea la clase secundaria, no se podrá acceder a ella desde fuera del paquete.Público: El nivel de acceso de un modificador público está en todas partes. Se puede acceder a él desde dentro de la clase, fuera de la clase, dentro del paquete y fuera del paquete.

Hay muchos modificadores que no son de acceso, como estáticos, abstractos, sincronizados, nativos, volátiles, transitorios, etc. Aquí, aprenderemos solo los modificadores de acceso.


Comprender los modificadores de acceso de Java

Entendamos los modificadores de acceso en Java mediante una tabla simple.

Modificador de accesodentro de clasedentro del paquetepaquete externo solo por subclasepaquete exterior
Privado Ynortenortenorte
Por defecto YYnortenorte
Protegido YYYnorte
Público YYYY

1) Privado

Solo se puede acceder al modificador de acceso privado dentro de la clase.

tipos de arbol binario

Ejemplo simple de modificador de acceso privado

En este ejemplo, hemos creado dos clases A y Simple. Una clase contiene un miembro de datos privados y un método privado. Estamos accediendo a estos miembros privados desde fuera de la clase, por lo que hay un error en tiempo de compilación.

 class A{ private int data=40; private void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A(); System.out.println(obj.data);//Compile Time Error obj.msg();//Compile Time Error } } 

Papel del constructor privado

Si hace que cualquier constructor de clase sea privado, no podrá crear la instancia de esa clase desde fuera de la clase. Por ejemplo:

 class A{ private A(){}//private constructor void msg(){System.out.println('Hello java');} } public class Simple{ public static void main(String args[]){ A obj=new A();//Compile Time Error } } 

Nota: Una clase no puede ser privada ni protegida excepto una clase anidada.


2) Predeterminado

Si no utiliza ningún modificador, se trata como por defecto por defecto. Solo se puede acceder al modificador predeterminado dentro del paquete. No se puede acceder a él desde fuera del paquete. Proporciona más accesibilidad que el privado. Pero es más restrictivo que protegido y público.

factoriales en java

Ejemplo de modificador de acceso predeterminado

En este ejemplo, hemos creado dos paquetes pack y mypack. Estamos accediendo a la clase A desde fuera de su paquete, ya que la clase A no es pública, por lo que no se puede acceder a ella desde fuera del paquete.

 //save by A.java package pack; class A{ void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A();//Compile Time Error obj.msg();//Compile Time Error } } 

En el ejemplo anterior, el alcance de la clase A y su método msg() es el predeterminado, por lo que no se puede acceder a él desde fuera del paquete.


3) Protegido

El modificador de acceso protegido es accesible dentro y fuera del paquete, pero solo a través de herencia.

El modificador de acceso protegido se puede aplicar al miembro de datos, al método y al constructor. No se puede aplicar en la clase.

Proporciona más accesibilidad que el modificador predeterminado.

Ejemplo de modificador de acceso protegido

En este ejemplo, hemos creado los dos paquetes pack y mypack. La clase A del paquete es pública, por lo que se puede acceder a ella desde fuera del paquete. Pero el método msg de este paquete está declarado como protegido, por lo que se puede acceder a él desde fuera de la clase sólo mediante herencia.

 //save by A.java package pack; public class A{ protected void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B extends A{ public static void main(String args[]){ B obj = new B(); obj.msg(); } } 
 Output:Hello 

4) Público

El modificador de acceso público es accesible en todas partes. Tiene el alcance más amplio entre todos los demás modificadores.

Ejemplo de modificador de acceso público

 //save by A.java package pack; public class A{ public void msg(){System.out.println('Hello');} } 
 //save by B.java package mypack; import pack.*; class B{ public static void main(String args[]){ A obj = new A(); obj.msg(); } } 
 Output:Hello 

Modificadores de acceso a Java con anulación de métodos

Si está anulando algún método, el método anulado (es decir, declarado en una subclase) no debe ser más restrictivo.

para cada java
 class A{ protected void msg(){System.out.println('Hello java');} } public class Simple extends A{ void msg(){System.out.println('Hello java');}//C.T.Error public static void main(String args[]){ Simple obj=new Simple(); obj.msg(); } } 

El modificador predeterminado es más restrictivo que protegido. Por eso hay un error en tiempo de compilación.