Sobes.tech
Junior

Cum funcționează modificatorul de acces 'protected' în limbajele de programare?

sobes.tech AI

Răspuns de la AI

Modificatorul de acces protected oferă acces la un membru al clasei (câmp, metodă sau proprietate) din:

  • Clasa în care este declarat acest membru.
  • Clasele moștenitoare (subclase).
  • În unele limbaje (de exemplu, Java) - din toate clasele din același pachet.

Aplicabilitate în funcție de limbaj:

  • Java: Disponibil în cadrul pachetului și în clasele moștenitoare din orice pachet.
  • C#: Disponibil în cadrul clasei și în clasele moștenitoare. Există și combinația protected internal, care oferă acces în cadrul assembly-ului și în clasele moștenitoare (inclusiv în clasele moștenitoare din alte assembly-uri).
  • C++: Disponibil în cadrul clasei și în clasele moștenitoare.
  • Python: Nu are un protected strict. Membrii destinați protecției sunt de obicei denumiți cu un underscore (_) la început, ceea ce este o convenție și nu o restricție strictă de acces.

Exemplu (Java):

class Parent {
    protected int protectedField;

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

class Child extends Parent {
    public void accessProtected() {
        this.protectedField = 10; // Acces din clasa moștenitoare
        this.protectedMethod(); // Acces din clasa moștenitoare
    }
}

class AnotherClassInSamePackage {
    public void accessProtected(Parent p) {
        p.protectedField = 20; // Acces din același pachet
        p.protectedMethod();   // Acces din același pachet
    }
}

class AnotherClassInDifferentPackage {
    // Nu are acces direct la membrii protected
    // cu excepția cazului în care este o subclasă
}

protected este folosit pe scară largă pentru implementarea moștenirii, permițând claselor moștenitoare să extindă funcționalitatea clasei părinte, în timp ce ascund detaliile interne ale interacțiunii lor față de lumea exterioară.