Modificadores de acceso Java
Modificadores de acceso Java
En este tutorial, aprenderemos sobre el modificador de acceso de Java, sus tipos y cómo usarlos con la ayuda de ejemplos.
¿Qué son los modificadores de acceso?
En Java, los modificadores de acceso se utilizan para establecer la accesibilidad (visibilidad) de clases, interfaces, variables, métodos, constructores, miembros de datos y métodos de establecimiento. Por ejemplo,
class Animal {
public void method1() {...}
private void method2() {...}
}
En el ejemplo anterior, hemos declarado 2 métodos:método1() y método2(). Aquí,
- método1 es
public
- Esto significa que otras clases pueden acceder a él. - método2 es
private
- Esto significa que otras clases no pueden acceder a él.
Tenga en cuenta la palabra clave public
y private
. Estos son modificadores de acceso en Java. También se conocen como modificadores de visibilidad.
Nota :No puede establecer el modificador de acceso de los métodos getters.
Tipos de modificador de acceso
Antes de conocer los tipos de modificadores de acceso, asegúrese de conocer los paquetes de Java.
Hay cuatro palabras clave modificadoras de acceso en Java y son:
Modificador | Descripción |
Predeterminado | las declaraciones solo son visibles dentro del paquete (paquete privado) |
Privado | las declaraciones son visibles solo dentro de la clase |
Protegido | las declaraciones son visibles dentro del paquete o todas las subclases |
Público | las declaraciones son visibles en todas partes |
Modificador de acceso predeterminado
Si no especificamos explícitamente ningún modificador de acceso para clases, métodos, variables, etc., entonces se considera por defecto el modificador de acceso predeterminado. Por ejemplo,
package defaultPackage;
class Logger {
void message(){
System.out.println("This is a message");
}
}
Aquí, el Registrador class tiene el modificador de acceso predeterminado. Y la clase es visible para todas las clases que pertenecen al defaultPackage paquete. Sin embargo, si intentamos usar el Logger class en otra clase fuera de defaultPackage, obtendremos un error de compilación.
Modificador de acceso privado
Cuando se declaran variables y métodos private
, no se puede acceder a ellos fuera de la clase. Por ejemplo,
class Data {
// private variable
private String name;
}
public class Main {
public static void main(String[] main){
// create an object of Data
Data d = new Data();
// access private variable and field from another class
d.name = "Programiz";
}
}
En el ejemplo anterior, hemos declarado una variable privada llamada nombre y un método privado llamado display()
. Cuando ejecutemos el programa, obtendremos el siguiente error:
Main.java:18: error: name has private access in Data
d.name = "Programiz";
^
El error se genera porque estamos intentando acceder a la variable privada y al método privado de los Data clase de Principal clase.
Quizás se pregunte qué pasa si necesitamos acceder a esas variables privadas. En este caso, podemos usar el método getters y setters. Por ejemplo,
class Data {
private String name;
// getter method
public String getName() {
return this.name;
}
// setter method
public void setName(String name) {
this.name= name;
}
}
public class Main {
public static void main(String[] main){
Data d = new Data();
// access the private variable using the getter and setter
d.setName("Programiz");
System.out.println(d.getName());
}
}
Salida :
The name is Programiz
En el ejemplo anterior, tenemos una variable privada llamada nombre . Para acceder a la variable desde la clase externa, hemos utilizado métodos:getName()
y setName()
. Estos métodos se denominan getter y setter en Java.
Aquí, hemos utilizado el método setter (setName()
) para asignar valor a la variable y el método getter (getName()
) para acceder a la variable.
Hemos utilizado this
palabra clave dentro de setName() para referirse a la variable de la clase. Para obtener más información sobre esta palabra clave, visite Java esta palabra clave.
Nota :No podemos declarar clases e interfaces privadas en Java. Sin embargo, las clases anidadas se pueden declarar privadas. Para obtener más información, visite Java Nested and Inner Class.
Modificador de acceso protegido
Cuando se declaran métodos y miembros de datos protected
, podemos acceder a ellos tanto dentro del mismo paquete como desde subclases. Por ejemplo,
class Animal {
// protected method
protected void display() {
System.out.println("I am an animal");
}
}
class Dog extends Animal {
public static void main(String[] args) {
// create an object of Dog class
Dog dog = new Dog();
// access protected method
dog.display();
}
}
Salida :
I am an animal
En el ejemplo anterior, tenemos un método protegido llamado display()
dentro del Animal clase. El Animal la clase es heredada por el Dog clase. Para obtener más información sobre la herencia, visite Herencia de Java.
Luego creamos un objeto perro del Perro clase. Usando el objeto intentamos acceder al método protegido de la clase principal.
Dado que se puede acceder a los métodos protegidos desde las clases secundarias, podemos acceder al método de Animal clase del Perro clase.
Nota :No podemos declarar clases o interfaces protected
en Java.
Modificador de acceso público
Cuando se declaran métodos, variables, clases, etc. public
, entonces podemos acceder a ellos desde cualquier lugar. El modificador de acceso público no tiene restricción de alcance. Por ejemplo,
// Animal.java file
// public class
public class Animal {
// public variable
public int legCount;
// public method
public void display() {
System.out.println("I am an animal.");
System.out.println("I have " + legCount + " legs.");
}
}
// Main.java
public class Main {
public static void main( String[] args ) {
// accessing the public class
Animal animal = new Animal();
// accessing the public variable
animal.legCount = 4;
// accessing the public method
animal.display();
}
}
Salida :
I am an animal. I have 4 legs.
Aquí,
- La clase pública Animal se accede desde el Principal clase.
- La variable pública legCount se accede desde el Principal clase.
- El método público
display()
se accede desde el Principal clase.
Modificadores de acceso resumidos en una figura

Los modificadores de acceso se utilizan principalmente para la encapsulación. Puedo ayudarnos a controlar qué parte de un programa puede acceder a los miembros de una clase. Para que se pueda prevenir el mal uso de los datos. Para obtener más información sobre la encapsulación, visite Encapsulación de Java.
Java