Sobes.tech
Junior

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

sobes.tech yapay zeka

AI'dan gelen yanıt

Erişim belirteci protected, sınıf üyelerinin (alanlar, metodlar) görünürlük seviyesini belirler. Erişim kısıtlanmıştır:

  1. Sınıf içinde: Erişim izinlidir. protected üyeler, sınıfın herhangi bir yerinden görülebilir.
  2. Türemiş sınıflarda: Erişim izinlidir. protected üyeleri içeren bir sınıftan türeyen sınıflar, bunlara doğrudan erişebilir, hatta başka bir paket içinde olsalar bile (bazı dillerde, örneğin Java'da).
  3. Aynı paket içinde (bazı dillerde, örneğin Java): Erişim izinlidir, default (paket-private) ile eşdeğerdir. protected üyeler, kalıtım bağımsız olarak aynı paketteki tüm sınıflar tarafından görülebilir.
  4. Dışarıdan (diğer paketler, kalıtım olmayan sınıflar): Erişim engellenmiştir. protected üyelerine doğrudan erişim, kalıtım olmayan veya aynı pakette olmayan sınıflardan mümkün değildir (Java'da).

Örnek (Java):

class BaseClass {
    protected int protectedMember = 10;

    protected void protectedMethod() {
        // Sınıf içinden erişim izinlidir
        System.out.println("BaseClass'tan protected metod");
    }
}

class DerivedClass extends BaseClass {
    void accessProtected() {
        // Türemiş sınıftan erişim izinlidir
        System.out.println(protectedMember);
        protectedMethod();
    }
}

class SamePackageClass {
    void accessProtected(BaseClass obj) {
        // Java'da, aynı paketteki başka bir sınıftan erişim izinlidir
        System.out.println(obj.protectedMember);
        obj.protectedMethod();
    }
}

class DifferentPackageClass {
    // ...
    // Erişim denemesi derleme hatası verecektir
    // obj.protectedMember;
    // obj.protectedMethod();
}

Bu nedenle, protected public'den daha yüksek, private veya default'tan ise daha düşüktür, böylece sınıf üyeleri kalıtım alanları ve bazı dillerde aynı paketteki sınıflar tarafından erişilebilir olur.