Modificadores de acceso en Java

Los modificadores de acceso en Java ayudan a restringir el alcance a una clase, un constructor, una variable, un método o un miembro de datos.

Tipos de Modificadores de Acceso en Java

En Java existen los siguientes modificadores de acceso: default, private, protected y public.

Defecto (Default)

Sino se especifica modificador de acceso para una clase, método o miembro de datos, se tiene un modificador de acceso default por defecto.

Cuando se usan estos modificadores solo se puede acceder dentro del mismo paquete, como puede verse en el siguiente ejemplo.

// 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

Privado (Private)

Los métodos o los miembros de datos que se declaran como privados usando la palabra clave private y sólo se puede acceder a ellos desde dentro de la clase en la que se declaran.

Cuando se usa este tipo de restricción, pueden ocurrir problemas de acceso como puede observarse en el siguiente ejemplo:

// Programa Java para ilustrar el error
// al usar la clase desde un mismo paquete
// con modificador private
package c;
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

Protegido (Protected)

El modificador de acceso protegido se declaran con la palabra clave protected. Los métodos o miembros de datos declarados como protected son accesibles desde dentro del mismo paquete o sub-clases dentro de paquetes diferentes.

En este par de ejemplos se puede ver como funciona el acceso en este tipo de modificadores de acceso protegido:

// Programa Java para ilustrar
// el modificador protected
package c1;
public class A {
    protected void mostrar(){
        System.out.println("Java desde Cero");
    }
}
// Programa Java para ilustrar
// el modificador protected
package c2;
// 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

Acceso público (Public)

El modificador de acceso público se especifica con la palabra clave public. Se caracteriza por tener el alcance más amplio entre todos los modificadores de acceso de Java

Las clases, métodos o miembros de datos que se declaran como públicos se pueden acceder desde cualquier lugar del programa.

A continuación un par de ejemplos en los que muestra el acceso en este tipo de modificadores:

// 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
¿Todavía no te has apuntado a nuestro Bootcamp?
Tenemos muchos cursos para ofrecerte y ¡TOTALMENTE GRATIS! Estos son algunos de ellos: