Modificadores de acceso en Java

Intermedio POO

En su soporte para la encapsulación, la clase proporciona dos beneficios principales. Primero, vincula datos con el código que lo manipula. Usted ha estado aprovechando anteriormente este aspecto de la clase. En segundo lugar, proporciona los medios por los que se puede controlar el acceso a los miembros. Es esta característica la que se examina aquí.

Aunque el enfoque de Java es un poco más sofisticado, en esencia, hay dos tipos básicos de miembros de la clase: público (public) y privado (private). Se puede acceder libremente a un miembro público mediante un código definido fuera de su clase. Se puede acceder a un miembro privado solo por otros métodos definidos por su clase. Es a través del uso de miembros privados que el acceso está controlado.

Restringir el acceso a los miembros de una clase es una parte fundamental de la programación orientada a objetos, ya que ayuda a evitar el mal uso de un objeto.

Al permitir el acceso a datos privados solo a través de un conjunto de métodos bien definidos, puede evitar que se asignen valores incorrectos a esos datos, por ejemplo, realizando una verificación de rango.

  • No es posible que el código fuera de la clase establezca el valor de un miembro privado directamente.
  • También puede controlar con precisión cómo y cuándo se utilizan los datos dentro de un objeto.
Por lo tanto, cuando se implementa correctamente, una clase crea una “caja negra” que se puede usar, pero cuyo funcionamiento interno no está abierto a alteraciones. 

Hasta este punto, no ha tenido que preocuparse por el control de acceso porque Java proporciona una configuración de acceso predeterminada en la que, para los tipos de programas mostrados anteriormente, los miembros de una clase están disponibles libremente para el código en otro programa. (Por lo tanto, para los ejemplos anteriores, la configuración de acceso default es esencialmente public.)

Aunque es conveniente para clases simples (y programas de ejemplo en cursos como este), esta configuración predeterminada es inadecuada para muchas situaciones del mundo real. Aquí presentamos otras funciones de control de acceso de Java.

1. Todos los Modificadores de Acceso

Como su nombre indica, los modificadores de acceso en Java ayudan a restringir el alcance de una clase, constructor, variable, método o miembro de datos. Hay cuatro tipos de modificadores de acceso disponibles en Java:

  1. Default – No se requiere palabra clave
  2. Private
  3. Protected
  4. Public
Tabla de Modificadores de Acceso en Java
Modificador/AccesoClasePaqueteSubclaseTodos
public
protectedNo
defaultNoNo
privateNoNoNo

2. Modificador de acceso por defecto (default)

Cuando no se especifica ningún modificador de acceso para una clase, método o miembro de datos, se dice estar teniendo modificador de acceso default por defecto.

Los miembros de datos, clase o métodos que no se declaran utilizando ningún modificador de acceso, es decir, que tengan un modificador de acceso predeterminado, solo son accesibles dentro del mismo paquete.

En este ejemplo, crearemos dos paquetes y las clases en los paquetes tendrán los modificadores de acceso predeterminados e intentaremos acceder a una clase de un paquete desde otra clase del segundo paquete.

// Programa Java para ilustrar el modificador default
package p1;

// La clase DemoDefault tiene modificador de acceso default
class DemoDefault {
    void mostrar()
    {
        System.out.println("Hola Mundo!");
    }
}
// Programa Java para ilustrar el error
// al usar la clase de un paquete diferente con
// modificador default
package p2;
import p1.*;

// Esta clase tiene un modificador de acceso predeterminado
public class DemoDefaultEjecutar {
    public static void main(String args[])
    {
        //accessing class Geek from package p1
        DemoDefault obj = new DemoDefault();
        obj.mostrar();
    }
}

Salida:

Error:(12, 9) java: cannot find symbol
 symbol: class DemoDefault
 location: class p2.DemoDefaultEjecutar

3. Modificador de acceso privado (private)

El modificador de acceso privado se especifica con la palabra clave private. Los métodos o los miembros de datos declarados como privados solo son accesibles dentro de la clase en la que se declaran.

  • Cualquier otra clase del mismo paquete no podrá acceder a estos miembros.
  • Las clases e interfaces no se pueden declarar como privadas (private).

En este ejemplo, crearemos dos clases A y B dentro del mismo paquete p1. Declararemos un método en la clase A como privado e intentaremos acceder a este método desde la clase B y veremos el resultado.

// Programa Java para ilustrar el error
// al usar la clase desde un mismo paquete
// con modificador private
package p1;

class A {
    private void mostrar() {
        System.out.println("Java desde Cero");
    }
}
class B{
    public static void main(String[] args) {
        A obj= new A();
        //tratando de acceder al método privado de otra clase
        obj.mostrar();
    }

}

Salida:

Error:(15, 12) java: mostrar() has private access in p1.A

4. Modificador de acceso protegido (protected)

El modificador de acceso protegido se especifica con la palabra clave protected.

  • Los métodos o miembros de datos declarados como protected son accesibles dentro del mismo paquete o sub-clases en paquetes diferentes.

En este ejemplo, crearemos dos paquetes p1 y p2. La clase A en p1 es public, para acceder a ella desde p2. El método que se muestra en la clase A está protegido y la clase B se hereda de la clase A y, a continuación, se accede a este método protegido creando un objeto de clase B.

// Programa Java para ilustrar
// el modificador protected
package p1;

public class A {

    protected void mostrar(){
        System.out.println("Java desde Cero");
    }

}
// Programa Java para ilustrar
// el modificador protected
package p2;

// importar todas las clases en el paquete p1
import p1.*;

public class B extends A {
    public static void main(String[] args) {
        B obj = new B();
        obj.mostrar();
    }
}

Salida:

Java desde Cero

5. Modificador de acceso público (public)

El modificador de acceso público se especifica con la palabra clave public.

  • El modificador de acceso público tiene el alcance más amplio entre todos los demás modificadores de acceso.
  • Las clases, métodos o miembros de datos que se declaran como públicos son accesibles desde cualquier lugar del programa. No hay restricciones en el alcance de los miembros de datos públicos.
// Programa Java para ilustrar
// el modificador public
package p1;

public class A {
    public void mostrar(){
        System.out.println("Java desde Cero");
    }
}
// Programa Java para ilustrar
// el modificador protected
package p2;

// importar todas las clases en el paquete p1
import p1.*;

public class B extends A {
    public static void main(String[] args) {
        A obj = new A();
        obj.mostrar();
    }
}

Salida:

Java desde Cero

6. Modificadores que no son de acceso

En Java, tenemos 7 modificadores que no son de acceso o, a veces, también llamados especificadores. Se usan con clases, métodos, variables, constructores, etc. para proporcionar información sobre su comportamiento a la JVM. Y son:

  • static
  • final
  • abstract
  • synchronized
  • transient
  • volatile
  • native

7. Puntos importantes

Si otros programadores usan tu clase, intente usar el nivel de acceso más restrictivo que tenga sentido para un miembro en particular. Use private a menos que tenga una buena razón para no hacerlo. También evite los campos públicos, excepto las constantes.

Modificadores de acceso
  • default, private, protected y public
Sending
User Review
5 (1 vote)

Sobre el Autor:

Hey hola! Yo soy Alex Walton y tengo el placer de compartir conocimientos hacía ti sobre el tema de Programación en Java, desde cero, Online y Gratis.

Deja una Respuesta

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.