Breaking

Post Top Ad

Your Ad Spot

jueves, 19 de diciembre de 2019

Modificadores de acceso Java

En este artículo, aprenderá sobre los diferentes modificadores de acceso en Java y cómo funcionan en diferentes escenarios.

¿Qué es el modificador de acceso?

Los modificadores de acceso son palabras clave que establecen la accesibilidad (visibilidad) de clase, interfaz, variable, miembro de datos, método o constructor y sus establecedores (valor de actualización de una variable). También se conocen como modificadores de visibilidad.
No puede establecer el modificador de visibilidad de los captadores (recuperar el valor de una variable) ya que siempre tienen la misma visibilidad que la de la propiedad.
El uso de modificadores de acceso obliga a una mejor encapsulación a su código. Es decir, con la encapsulación puede controlar qué parte de un programa puede acceder a los miembros de una clase. Para que se pueda evitar el mal uso de los datos.

Tipos de modificador de acceso

Modificadores de acceso dentro del paquete

Un paquete es simplemente un contenedor que agrupa tipos relacionados (clases Java, interfaces, enumeraciones y anotaciones). Lectura recomendada: paquetes Java
Hay cuatro palabras clave de modificadores de acceso en Java y son:
ModificadorDescripción
PrivadoLas declaraciones son visibles solo dentro de la clase
DefectoLas declaraciones solo son visibles dentro del paquete (paquete privado)
ProtegidoLas declaraciones son visibles dentro del paquete o y todas las subclases
PúblicoLas declaraciones son visibles en todas partes
Todos estos modificadores de acceso se explican en detalle a continuación.

Modificador de acceso predeterminado

Si el modificador de acceso no se especifica explícitamente para una clase, variable, método o constructor, entonces, por defecto, se supone que es un modificador de acceso predeterminado.

Ejemplo 1: definir modificadores de acceso predeterminados

  1. package defaultPackage;
  2. class Logger {
  3. void message(){
  4. System.out.println(“This is a message”);
  5. }
  6. }
Aquí, la Loggerclase tiene el modificador de acceso predeterminado. Y esta loggerclase es visible para las clases que pertenecen al defaultPackagepaquete. Si importa la Loggerclase en un paquete diferente e intenta crear una instancia, obtendrá un error de compilación.

Modificador de acceso privado

Solo los métodos y los miembros de datos pueden declararse como privados, mientras que las clases o interfaces no pueden declararse como privadas. Sin embargo, las clases internas en el caso de una clase anidada pueden declararse privadas. Lectura recomendada:  Java anidada y clase interna
Se puede acceder a las variables privadas fuera de la clase, si los métodos getter públicos están presentes en la clase.

Ejemplo 2: definir modificadores de acceso privado

  1. public class Data {
  2. private String name;
  3. public String getName() {
  4. return this.name;
  5. }
  6. public void setName(String name) {
  7. this.format = name;
  8. }
  9. }
  10. public class Main {
  11. Public static void main(String[] main){
  12. Data d = new Data();
  13. d.setName(“Programiz”);
  14. System.out.println(d.getName());
  15. }
  16. }
Cuando ejecutas el programa, la salida será:
Programiz
Aquí, el nombre es una variable privada y solo es visible dentro de la clase de datos . Sin embargo, se puede acceder a él en otra clase Maincon la ayuda de métodos públicos de obtención y establecimiento.

Modificador de acceso protegido

Se puede acceder al modificador de acceso protegido dentro del mismo paquete, así como a las clases que subclasan su clase base directamente. Solo los métodos y los miembros de datos pueden declararse como protegidos, mientras que las clases o interfaces no pueden declararse como protegidas.

Ejemplo 3: definir modificador de acceso protegido

  1. // Logger.java
  2. package package1;
  3. public class Logger {
  4. protected void debug(String logLine){
  5. System.out.println("Debug line: "+logLine);
  6. }
  7. }
  8. // Main.java
  9. package package2;
  10. import package1.Logger;
  11. public class Main extends Logger {
  12. public static void main(String [] args){
  13. Main logger = new Main();
  14. // invokes debug() from Logger class
  15. logger.debug("hello from main");
  16. }
  17. }
Cuando ejecutas el programa, la salida será:
Línea de depuración: hola desde main
Como puede ver, los Logger.javaMain.javaestán en un paquete diferente. El debug()método en Loggerclase está protegido y a este método solo se puede acceder dentro de package1Pero, sin embargo, también se accede a ella en la Mainclase. Y todo esto es posible porque la Mainclase hereda la Loggerclase.

Modificador de acceso público

El modificador de acceso público no tiene ninguna restricción de alcance. El modificador de acceso público se puede aplicar a clases e interfaces junto con métodos, miembros de datos y variables.

Ejemplo 4: definir modificadores de acceso público

  1. // Logger.java
  2. public class Logger {
  3. public int debugLevel = 1;
  4. public void debug(String logLine){
  5. System.out.println("Debug: "+logLine);
  6. }
  7. public void info(String logLine){
  8. System.out.println("Info: "+logLine);
  9. }
  10. }
  11. // LoggerImp.java
  12. public class LoggerImp {
  13. public static void main( String[] args ) {
  14. Logger logger = new Logger();
  15. logger.debug("debug with level " + logger.debugLevel);
  16. logger.debugLevel = 5;
  17. logger.info("info with level " + logger.debugLevel);
  18. }
  19. }
Cuando ejecutas el programa, la salida será:
Depuración: depuración con nivel 1
Información: información con nivel 5
Aquí, en LoggerImpclase, pudiste crear una instancia de la Loggerclase porque su modificador de acceso es público. Las variables y métodos dentro de la LoggerImpclase también son públicos. Por lo tanto, puede usarlo directamente en su LoggerImpclase.

Todos los modificadores de acceso resumidos en una figura

Modificadores de acceso a Java

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas