Sobes.tech
Junior

Как работает модификатор доступа protected в языках программирования?

sobes.tech АИ

Одговор од АИ

Modifikator pristupa protected određuje nivo vidljivosti članova klase (polja, metode). Pristup njima je ograničen:

  1. Unutar klase: Pristup je dozvoljen. Članovi protected su vidljivi sa bilo kojeg mesta unutar svoje klase.
  2. U klasama koje nasleđuju: Pristup je dozvoljen. Klase koje nasleđuju od klase sa protected članovima mogu direktno da pristupe tim članovima, čak i ako se nalaze u drugom paketu (u nekim jezicima, na primer Java).
  3. Unutar istog paketa (u nekim jezicima, na primer Java): Pristup je dozvoljen, ekvivalentno default (package-private). Članovi protected su vidljivi svim klasama u istom paketu, bez obzira na nasleđivanje.
  4. Sa spolja (drugi paketi, klase koje ne nasleđuju): Pristup je zabranjen. Direktan pristup protected članovima iz klasa koje ne nasleđuju ili se ne nalaze u istom paketu (Java) nije moguć.

Primer (Java):

class BaseClass {
    protected int protectedMember = 10;

    protected void protectedMethod() {
        // Pristup iznutra klase je dozvoljen
        System.out.println("Zaštićena metoda iz BaseClass");
    }
}

class DerivedClass extends BaseClass {
    void accessProtected() {
        // Pristup iz klase koja nasleđuje je dozvoljen
        System.out.println(protectedMember);
        protectedMethod();
    }
}

class SamePackageClass {
    void accessProtected(BaseClass obj) {
        // U Javi, pristup iz druge klase u istom paketu je dozvoljen
        System.out.println(obj.protectedMember);
        obj.protectedMethod();
    }
}

class DifferentPackageClass {
    // ...
    // Pokušaj pristupa će izazvati grešku pri kompilaciji
    // obj.protectedMember;
    // obj.protectedMethod();
}

Tako protected obezbeđuje viši nivo enkapsulacije od public, ali niži od private ili default, čineći članove klase dostupnim naslednicima i, u nekim jezicima, klasama u istom paketu.