Junior
Koji su modifikatori pristupa u C#?
sobes.tech АИ
Одговор од АИ
U C# postoje sledeći modifikatori pristupa:
- public: Pristup nije ograničen. Članovi označeni kao
publicdostupni su sa bilo kog mesta gde je dostupan njihov sadržavajući tip. - private: Pristup je ograničen na njihov sadržavajući tip. Članovi označeni kao
privatedostupni su samo iz koda unutar istog klase ili strukture. - protected: Pristup je ograničen na sadržavajući tip ili tipove koji su izvedeni iz sadržavajućeg tipa. Članovi označeni kao
protecteddostupni su unutar svoje klase i u naslednim klasama. - internal: Pristup je ograničen na trenutnu kompilaciju (.dll ili .exe). Članovi označeni kao
internaldostupni su sa bilo kog mesta unutar iste kompilacije. - protected internal: Pristup je ograničen na trenutnu kompilaciju ili tipove izvedene iz sadržavajućeg tipa u drugim kompilacijama. Ovo je kombinacija
protectediinternal. - private protected: Pristup je ograničen na sadržavajući tip ili tipove izvedene iz sadržavajućeg tipa samo u istoj kompilaciji. Ovo je kombinacija
privateiprotected.
// Primer korišćenja modifikatora pristupa
public class MyClass
{
public int PublicField; // Dostupan sa bilo kog mesta
private int PrivateField; // Dostupan samo unutar MyClass
protected int ProtectedField; // Dostupan unutar MyClass i u naslednim klasama
internal int InternalField; // Dostupan unutar trenutne kompilacije
protected internal int ProtectedInternalField; // Dostupan unutar trenutne kompilacije ILI u naslednim klasama
private protected int PrivateProtectedField; // Dostupan unutar MyClass ILI u naslednim klasama u istoj kompilaciji
void MyMethod()
{
PrivateField = 10; // OK
}
}
public class DerivedClass : MyClass
{
void DerivedMethod()
{
ProtectedField = 20; // OK
// PrivateField = 30; // Greška - privatno polje nije dostupno u nasledniku
ProtectedInternalField = 40; // OK
PrivateProtectedField = 50; // OK
}
}
public class AnotherClassInSameAssembly
{
void AnotherMethod()
{
MyClass mc = new MyClass();
mc.PublicField = 1; // OK
mc.InternalField = 2; // OK
mc.ProtectedInternalField = 3; // OK
// mc.PrivateField = 4; // Greška
// mc.ProtectedField = 5; // Greška
// mc.PrivateProtectedField = 6; // Greška
}
}