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.