Sobes.tech
Junior

Görünürlük modifikörleri nedir ve Kotlin'de nasıl kullanılır?

sobes.tech yapay zeka

AI'dan gelen yanıt

Kotlin'de görünürlük modifikasyonları, bildirimlerin (sınıflar, arayüzler, fonksiyonlar, özellikler) diğer program bölümleri tarafından erişilebilirliğini belirler.

Ana görünürlük modifikasyonları:

  • public: Her yerde görünür. Varsayılan modifikatördür.
  • internal: Sadece bir modül içinde görünür. Bir modül, birlikte derlenen Kotlin dosyaları kümesi olarak kabul edilir.
  • protected: Sınıf ve alt sınıflarında görünür (sınıf üyeleri dahil). Paket dışından görünmez.
  • private: Tanımlandığı dosya içinde görünür. Sınıf üyeleri için, sadece bu sınıf içinde (ve onun companion object, iç içe ve iç sınıflarında) görünür.

Modifikasyonların kullanımı:

  • Sınıflar, arayüzler, nesneler ve yapıcıları üzerinde.
  • Üst seviyedeki fonksiyonlar, özellikler ve onların getter/setter'ları üzerinde (sınıflar dışında).
  • Sınıf üyeleri üzerinde (iç içe sınıflar, iç sınıflar, fonksiyonlar, özellikler).

Örnek:

// Dosya: example.kt

private const val PRIVATE_CONSTANT = 1 // Sadece bu dosyada görünür

internal fun internalFunction() { // Sadece modül içinde görünür
    println("Dahili fonksiyon çağrıldı")
}

open class BaseClass {
    protected val protectedProperty = "Protected" // Bu sınıf ve alt sınıflarda görünür

    fun publicMethod() { // Her yerde görünür (varsayılan olarak public)
        println("Public method called")
    }

    private fun privateMethod() { // Sadece BaseClass içinde görünür
        println("Private method called")
    }
}

class DerivedClass : BaseClass() {
    fun accessProtected() {
        println("Protected property erişimi: $protectedProperty") // protected erişimi
        // privateMethod() // Hata: private alt sınıfta görünmez
    }
}

fun main() {
    val base = BaseClass()
    base.publicMethod()
    // base.protectedProperty // Hata: protected sınıf ve alt sınıflar dışında görünmez

    val derived = DerivedClass()
    derived.accessProtected()

    internalFunction()
    // PRIVATE_CONSTANT // Hata: private üst seviyede sadece tanımlandığı dosyada görünür
}
Modifikator Erişilebilirlik Nerede kullanılır
public Her yerde Varsayılan, başka bir modifikator belirtilmediğinde
internal Modül içinde Kütüphane veya modül içi API için
protected Sınıf ve alt sınıflarda (sınıf üyeleri için) Kalıtımla sınıf hiyerarjileri oluşturmak için
private Dosya içinde (üst seviye); sınıf içinde (üye olarak) Dosya veya sınıf içinde uygulama detaylarını gizlemek için