Sobes.tech
Junior

Come funziona il modificatore di accesso 'protected' nei linguaggi di programmazione?

sobes.tech AI

Risposta dell'AI

Il modificatore di accesso protected consente l'accesso a un membro di una classe (campo, metodo o proprietà) da:

  • La stessa classe in cui è dichiarato quel membro.
  • Classi derivate (sottoclassi).
  • In alcuni linguaggi (ad esempio, Java) - da tutte le classi all'interno dello stesso package.

Applicabilità per linguaggio:

  • Java: Disponibile all’interno del package e nelle classi derivate di qualsiasi package.
  • C#: Disponibile all’interno della classe e nelle classi derivate. Esiste anche la combinazione protected internal, che consente l’accesso all’interno dell’assembly e nelle classi derivate (inclusi i classi derivate in altri assembly).
  • C++: Disponibile all’interno della classe e nelle classi derivate.
  • Python: Non ha un protected rigoroso. I membri destinati alla protezione sono generalmente nominati con un underscore (_) all’inizio, che è una convenzione e non una restrizione di accesso.

Esempio (Java):

class Parent {
    protected int protectedField;

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

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Accesso dalla sottoclasse
        this.protectedMethod(); // Accesso dalla sottoclasse
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Accesso dallo stesso package
        p.protectedMethod();   // Accesso dallo stesso package
    }
}

class AnotherClassInDifferentPackage {
    // Non ha accesso diretto ai membri protected
    // a meno che non sia una sottoclasse
}

protected è ampiamente usato per implementare l’ereditarietà, consentendo alle classi derivate di estendere le funzionalità della classe genitore, nascondendo allo stesso tempo i dettagli interni della loro interazione dal mondo esterno.