Sobes.tech
Junior — Middle

Java və Kotlin dillərində protected giriş modifikatorunun istifadəsindəki fərqləri izah edin.

sobes.tech Süni İntellekt

AI-dan cavab

Java-da, giriş modifikatoru protected, sinif üzvünün aşağıdakı yerlərdə əlçatan olduğunu göstərir:

  • Öz sinifində
  • Bütün irsi siniflərdə (hətta fərqli paketdə olsalar belə)
  • Eyni paketdəki bütün siniflərdə

Yəni, Java-da protected, irsi və paket vasitəsilə girişin birləşməsidir.

Kotlin-də isə protected yalnız sinif və onun alt sinifləri daxilində giriş deməkdir, amma digər paketdəki siniflərdən giriş mümkün deyil. Kotlin-də paketə giriş anlayışı yoxdur, ona görə protected Java-dan daha sərtdir.

Nümunə:

// 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; // Əlçatan, çünki eyni paketdə
    }
}

package pkg2;
public class C extends A {
    void test() {
        int val = x; // Əlçatan, çünki irsi
    }
}
// Kotlin
open class A {
    protected val x = 10
}

class B : A() {
    fun test() {
        println(x) // Əlçatan, irsi
    }
}

class C {
    fun test() {
        val a = A()
        // println(a.x) // Xəta: `protected` sinif və onun irsi xaricində əlçatan deyil
    }
}

Buna görə, əsas fərq odur ki, Kotlin-də protected paket vasitəsilə girişə imkan vermir, yalnız irsi vasitəsilə, Java-da isə hər ikisi mümkündür.