Sobes.tech
Junior

¿Cómo funciona el modificador de acceso 'protected' en los lenguajes de programación?

sobes.tech AI

Respuesta de la IA

El modificador de acceso protected proporciona acceso a un miembro de la clase (campo, método o propiedad) desde:

  • La propia clase donde se declara ese miembro.
  • Clases derivadas (subclases).
  • En algunos lenguajes (por ejemplo, Java), desde todas las clases dentro del mismo paquete.

Aplicabilidad por lenguajes:

  • Java: Disponible dentro del paquete y en clases derivadas de cualquier paquete.
  • C#: Disponible dentro de la clase y en clases derivadas. También existe la combinación protected internal, que proporciona acceso dentro del ensamblado y en clases derivadas (incluyendo clases derivadas en otros ensamblados).
  • C++: Disponible dentro de la clase y en clases derivadas.
  • Python: No tiene un protected estricto. Los miembros destinados a protección generalmente se nombran con un guion bajo (_) al principio, lo cual es una convención y no una restricción de acceso estricta.

Ejemplo (Java):

class Parent {
    protected int protectedField;

    protected void protectedMethod() {
        // ...
    }
}

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Acceso desde la clase derivada
        this.protectedMethod(); // Acceso desde la clase derivada
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Acceso desde la misma paquete
        p.protectedMethod();   // Acceso desde la misma paquete
    }
}

class AnotherClassInDifferentPackage {
    // No tiene acceso directo a miembros protected
    // a menos que sea una subclase
}

protected se usa ampliamente para implementar herencia, permitiendo que las clases derivadas amplíen la funcionalidad de la clase padre, mientras ocultan los detalles internos de su interacción del mundo exterior.