Sobes.tech
Junior — Middle

Java ve Kotlin dillerinde protected erişim belirteçlerinin kullanımındaki farkları açıklayın.

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da, erişim belirteci protected, sınıf üyesinin erişilebilir olduğu anlamına gelir:

  • Sınıf içinde
  • Tüm kalıtım sınıflarında (farklı paketlerde olsalar bile)
  • Aynı paketteki tüm sınıflarda

Yani, Java'da protected, kalıtım ve paket erişiminin bir kombinasyonudur.

Kotlin'de ise protected, yalnızca sınıfın kendisi ve alt sınıfları içinde erişim anlamına gelir, ama aynı paketteki diğer sınıflardan erişilebilir değildir. Kotlin'de paket erişimi kavramı yoktur, bu nedenle protected, Java'dan daha katıdır.

Örnek:

// Java
package pkg1;
public class A {
    protected int x = 10;
}

package pkg1;
public class B {
    void test() {
        A a = new A();
        int val = a.x; // Erişilebilir, çünkü aynı paket
    }
}

package pkg2;
public class C extends A {
    void test() {
        int val = x; // Erişilebilir, çünkü alt sınıf
    }
}
// Kotlin
open class A {
    protected val x = 10
}

class B : A() {
    fun test() {
        println(x) // Erişilebilir, alt sınıf
    }
}

class C {
    fun test() {
        val a = A()
        // println(a.x) // Hata: `protected` sınıf ve alt sınıflar dışında erişilemez
    }
}

Dolayısıyla, temel fark, Kotlin'de protected'in paket erişimi sağlamaması, yalnızca kalıtım yoluyla erişim olmasıdır, Java'da ise her ikisi de mümkündür.