Sobes.tech
Junior

Kuidas töötab juurdepääsu muundur 'protected' programmeerimiskeeltes?

sobes.tech AI

Vastus AI-lt

Juurdepääsukohaldur protected võimaldab juurdepääsu klassi liikmele (välja, meetodile või omadusele):

  • Oma klassist, kus see liikme on deklareeritud.
  • Pärilikelu klassidest (lasteklassidest).
  • Mõnedes keeltes (näiteks Java) - kõigist klassidest samas paketis.

Keele sobivus:

  • Java: saadaval paketis ja pärilikel klassidel igast paketist.
  • C#: saadaval klassi piires ja pärilikel klassidel. Samuti on olemas kombinatsioon protected internal, mis võimaldab juurdepääsu kogu koostamise ulatuses ja pärilikel klassidel (ka teistes koostamistes pärilikel klassidel).
  • C++: saadaval klassi piires ja pärilikel klassidel.
  • Python: ei oma ranget protected. Liikmed, mis on mõeldud kaitseks, märgitakse tavaliselt ühe allkriipsuga (_), mis on konventsioon, mitte range juurdepääsupiirang.

Näide (Java):

klass Vanem {
    protected int protectedField;

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

klass Laps extends Vanem {
    avalik void accessProtected() {
        this.protectedField = 10; // Juurdepääs päriliku klassi seest
        this.protectedMethod(); // Juurdepääs päriliku klassi seest
    }
}

klass TeineKlassSamastPakist {
    avalik void accessProtected(Vanem p) {
        p.protectedField = 20; // Juurdepääs samast paketist
        p.protectedMethod();   // Juurdepääs samast paketist
    }
}

klass TeineKlassErinevastPakist {
    // Ei oma otsest juurdepääsu protected liikmetele
    // välja arvatud juhul, kui see on päriliku klass
}

protected kasutatakse laialdaselt päriluse teostamiseks, võimaldades pärilikel klassidel laiendada vanema klassi funktsionaalsust, samal ajal peites nende sisemisi detaile väljast.