ProgramlamaBackend Geliştirici

Kotlin'de görünürlük değiştiricileri nedir ve uygulamanın kapsülleme ve mimarisini nasıl etkiler?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap.

Soru Geçmişi:

Görünürlük değiştiricileri (visibility modifiers) – Kotlin'in Java'dan miras aldığı ve geliştirdiği temel bir özelliktir. Sınıflara, fonksiyonlara ve özelliklere erişimi sınırlamaya olanak tanıyarak kapsülleme ve modülerlik için en iyi uygulamaları destekler.

Sorun:

Yanlış görünürlük kullanımı, mimarinin katmanlarının ihlaline, uygulamanın dışına sızıntıya veya tam tersine, sınıfların ve yöntemlerin ihtiyaç duyulduğunda erişilemez hale gelmesine neden olabilir. Bu hatalar çoğu zaman çok geç fark edilir.

Çözüm:

Kotlin'de dört görünürlük değiştirici vardır:

  • public — her yerde erişilebilir (varsayılan)
  • internal — yalnızca bir modül içinde erişilebilir
  • protected — yalnızca sınıf içinde ve alt sınıflarında erişilebilir
  • private — yalnızca dosya, sınıf veya nesne içinde erişilebilir

Kod örneği:

open class Base { private fun onlyBase() {} protected fun baseAndDerived() {} internal fun insideModule() {} public fun anyone() {} } class Derived : Base() { fun test() { baseAndDerived() // erişilebilir // onlyBase() — hata } }

Ana özellikler:

  • internal Kotlin'e özgüdür, Java'da yoktur
  • Üst seviye öğeler için değiştiriciler özel bir şekilde çalışır: private, görünürlüğü dosyayla sınırlar
  • Arayüzlerde tüm yöntemler ve özellikler varsayılan olarak public'tir

Kandırıcı Sorular.

Kütüphane yayınlandığında internal değiştiricisi nasıl çalışır?

internal, elemanları bir modül içinde gizler, ancak bir kütüphane jar/aar olarak derlendiğinde, internal elemanlar yansıtma üzerinden görünür.

Bir sınıfın özelliği için private ve üst seviye bir fonksiyon için private arasındaki fark nedir?

Sınıfın özelliğindeki private, görünürlüğü yalnızca sınıf ile sınırlar, oysa üst seviye için yalnızca tanımlandığı dosya ile sınırlar.

Üst seviye bir fonksiyona protected uygulanabilir mi?

Hayır, protected yalnızca sınıf veya arayüz üyeleri için kullanılabilir. Üst seviye için protected kullanılamaz – derleme hatası olacak.

Yaygın Hatalar ve Anti-deseni

  • Gereksiz yere açık olan sınıflar ve fonksiyonlar (public)
  • Bir modül bağımsız bileşenleri bir araya getirdiğinde internal kullanımı
  • Üst seviye fonksiyonlar veya özellikler için protected kullanma girişimi

Gerçek Hayattan Örnekler

Olumsuz Durum

Büyük bir kütüphane, neredeyse tüm API'leri public olarak açıkladı, yardımcı programlar ve yardımcı fonksiyonlar da dahil – sonuç olarak kullanıcılar, uygulama detaylarına bağımlı hale geldi.

Artıları:

  • Herkes için kullanım kolaylığı

Eksileri:

  • Geriye dönük uyumluluk ve yeniden yapılandırma zorlukları

Olumlu Durum

Sadece gerekli sınıflar public olarak tanımlandı, diğerleri internal veya private, görünürlük seviyeleri net bir şekilde ayrıldı.

Artıları:

  • Kontrollü erişim, iç değişiklikler kolay

Eksileri:

  • Mimari kılavuzların desteklenmesi ve tasarımda dikkat gerektirir.