Modificadores de Acceso en Java: Controlando la visibilidad de tu código

En el contexto de la programación orientada a objetos ( es decir , la programación común ) , no solo se trata de escribir el código que haga funcionar las cosas , sino también de que sea mantenible , escalable y muy seguro . En este caso , los modificadores de acceso , por como í decirlo son fundamentales para ello , ya que permiten controlar la visibilidad ( la “ accesibilidad ” ) de las clases, los atributos, los métodos y los constructores de clase . Puedes pensar en ellos como las llaves y los candados del programa: decide quién puede acceder a cada “habitación” de tu código , y hasta dónde llega cada permiso.

Sep 22, 2025 - 09:14
Sep 22, 2025 - 10:09
 0  15
Modificadores de Acceso en Java: Controlando la visibilidad de tu código
Modificadores de Acceso en Java: Controlando la visibilidad de tu código

¿Qué son los modificadores de acceso?

Son palabras clave que definen el nivel de acceso que otros elementos del programa (clases, métodos, atributos, paquetes) pueden tener sobre el recurso donde se aplican.

En Java existen cuatro modificadores principales:

  1. public

  2. private

  3. protected

  4. default (cuando no se especifica ninguno)

Los 4 modificadores de acceso explicados

1. public → acceso total

  • Un elemento declarado como public puede ser accedido desde cualquier clase, en cualquier paquete.

  • Es ideal para métodos o clases que quieras exponer como parte de una API pública.

Ejemplo:

public class Usuario {
    public String nombre;

    public void mostrarNombre() {
        System.out.println("Nombre: " + nombre);
    }
}

Aquí, tanto Usuario como el método mostrarNombre() pueden ser usados en cualquier parte del proyecto.

2. private → acceso restringido a la misma clase

  • Es el nivel de acceso más restrictivo.

  • Solo permite que los atributos y métodos se usen dentro de la misma clase.

  • Promueve la encapsulación, una de las bases de la POO.

Ejemplo:

public class CuentaBancaria {
    private double saldo;  // Solo accesible dentro de la clase

    public void depositar(double monto) {
        saldo += monto;
    }

    public double obtenerSaldo() {
        return saldo; // Controlas cómo se expone la información
    }
}

Aquí, saldo está protegido: nadie puede modificarlo directamente desde fuera.

3. default (sin especificar) → acceso dentro del mismo paquete

  • Cuando no colocas ningún modificador, Java asume el nivel por defecto.

  • El acceso se limita al paquete donde está definida la clase.

  • Muy útil cuando quieres que varias clases relacionadas trabajen juntas, pero sin exponer todo hacia afuera.

Ejemplo:

class Pedido {
    String id;  // acceso por defecto

    void mostrarId() {
        System.out.println("Pedido: " + id);
    }
}

Aquí, Pedido y id solo podrán usarse dentro del mismo paquete.

4. protected → paquete + herencia

  • Permite acceso a:

    • Clases dentro del mismo paquete.

    • Subclases, incluso si están en otro paquete.

  • Es muy usado en jerarquías de herencia.

Ejemplo:

public class Empleado {
    protected double salario; // accesible por herencia

    protected void calcularBono() {
        System.out.println("Bono del empleado");
    }
}

public class Gerente extends Empleado {
    public void mostrarSalario() {
        System.out.println("Salario con bono: " + (salario + 500));
    }
}

Aquí, Gerente puede acceder a salario gracias al modificador protected.

Tabla resumen de accesibilidad:

Modificador Misma clase Mismo paquete Subclases Otro paquete
public  ✓   ✓   ✓   ✓ 
protected  ✓   ✓   ✓ 

  X (salvo herencia)

default  ✓   ✓  X X
private  ✓  X X X

¿Por qué son importantes los modificadores de acceso?

  1. Seguridad del código → protegen datos sensibles de accesos indebidos.

  2. Encapsulación → permiten controlar cómo se exponen los atributos y métodos.

  3. Mantenibilidad → ayudan a organizar mejor las clases y a reducir errores.

  4. Escalabilidad → facilitan que el proyecto crezca de manera ordenada.

Buenas prácticas al usarlos:

  • Declara los atributos siempre como private y expón métodos de acceso (getters y setters) cuando sea necesario.
  • Usa public solo en lo que realmente deba ser accesible.
  • Aprovecha protected en jerarquías de herencia para compartir lógica.
  • Prefiere default cuando trabajes con paquetes diseñados como módulos internos.

“Un buen programador no solo escribe código que funciona, sino código que inspira confianza: dominar los modificadores de acceso es dar el primer paso hacia un software seguro y profesional”

¿Cuál es su reacción?

like

dislike

love

funny

angry

sad

wow