Saltar al contenido

Modificadores de acceso en java – Javatpoint

septiembre 23, 2021

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 en él.

Hay cuatro tipos de modificadores de acceso a Java:

  1. Privado: El nivel de acceso de un modificador privado está solo dentro de la clase. No se puede acceder desde fuera de la clase.
  2. Defecto: El nivel de acceso de un modificador predeterminado está solo dentro del paquete. No se puede acceder desde fuera del paquete. Si no especifica ningún nivel de acceso, será el predeterminado.
  3. 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 puede acceder a ella desde fuera del paquete.
  4. Público: El nivel de acceso de un modificador público está en todas partes. Se puede acceder 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í, solo aprenderemos los modificadores de acceso.


Comprensión de los modificadores de acceso de Java

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

Modificador de acceso dentro de la clase dentro del paquete paquete externo solo por subclase paquete exterior
Privado Y norte norte norte
Defecto Y Y norte norte
Protegido Y Y Y norte
Público Y Y Y Y

1) Privado

El modificador de acceso privado es accesible solo dentro de la clase.

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.

clase A {datos privados int = 40; private void msg () {System.out.println («Hola java»);}} public class Simple {public static void main (String args[]) {A obj = nuevo A (); System.out.println (obj.data); // Error de tiempo de compilación obj.msg (); // Error de tiempo de compilación}}

Rol del constructor privado

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

class A {private A () {} // constructor privado void msg () {System.out.println («Hola java»);}} public class Simple {public static void main (String args[]) {A obj = new A (); // Error de tiempo de compilación}}

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


2) Por defecto

Si no usa ningún modificador, se trata como defecto por defecto. El modificador predeterminado es accesible solo dentro del paquete. No se puede acceder desde fuera del paquete. Proporciona más accesibilidad que privada. Pero es más restrictivo que protegido y público.

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 desde fuera del paquete.

// guardar con el paquete A.java; clase A {void msg () {System.out.println («Hola»);}}

// guardar con el paquete B.java mypack; paquete de importación. *; class B {public static void main (String args[]) {A obj = new A (); // Error de tiempo de compilación obj.msg (); // Error de tiempo de compilación}}

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


3) Protegido

los 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 en el miembro de datos, el método y el 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. El paquete de clase A de paquete es público, por lo que se puede acceder desde fuera del paquete. Pero el método msg de este paquete se declara como protegido, por lo que se puede acceder desde fuera de la clase solo a través de la herencia.

// guardar con el paquete A.java; public class A {protected void msg () {System.out.println («Hola»);}}

// guardar con el paquete B.java mypack; paquete de importación. *; la clase B extiende A {public static void main (String args[]) {B obj = nuevo B (); obj.msg (); }}


4) Público

los 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

// guardar con el paquete A.java; public class A {public void msg () {System.out.println («Hola»);}}

// guardar con el paquete B.java mypack; paquete de importación. *; class B {public static void main (String args[]) {A obj = nuevo A (); obj.msg (); }}


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

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

class A {protected void msg () {System.out.println («Hola java»);}} public class Simple extiende A {void msg () {System.out.println («Hola java»);} // CTError 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.

close