- Modificador de acceso privado
- Papel del constructor privado
- Modificador de acceso predeterminado
- Modificador de acceso protegido
- Modificador de acceso público
- 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:
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 acceso | dentro de clase | dentro del paquete | paquete externo solo por subclase | paquete exterior |
---|---|---|---|---|
Privado | Y | norte | norte | norte |
Por defecto | Y | Y | norte | norte |
Protegido | Y | Y | Y | norte |
Público | Y | Y | Y | Y |
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.