ProgramlamaKotlin geliştirici

Kotlin'de 'open' anahtar kelimesiyle bir sınıf tanımının, normal bir sınıftan farkı nedir ve kalıtım nasıl gerçekleştirilir? İnce noktaları, özellikleri ve bir kod örneği veriniz.

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

Cevap

Kotlin'de varsayılan olarak tüm sınıflar, yöntemler ve özellikler sonludur (final). Yani, açık bir şekilde open anahtar kelimesi belirtilmediği sürece kalıtılamaz veya geçersiz kılınamaz.

open anahtar kelimesi, sınıfın kalıtımına veya yöntemin geçersiz kılınmasına izin verir. Bu, Java'dan temel bir farklılıktır; çünkü Java'da sınıflar varsayılan olarak kalıma açıktır.

Örnek:

open class Animal { open fun sayHello() { println("Hello from Animal!") } } class Dog : Animal() { override fun sayHello() { println("Woof!") } }
  • Animal sınıfından open kaldırılırsa — kalıtım denemesi derleme hatası ile sonuçlanır.
  • Geçersiz kılmak istediğiniz yöntemler/özellikler için override zorunludur.
  • Arayüzler interface anahtar kelimesi ile uygulanır ve open gerektirmez.

Kandırmaca Soru

Kotlin'de Java'daki gibi herhangi bir sınıf kalıtılabilir mi?

Cevap: Hayır, sadece open (veya abstract) olarak işaretlenmiş sınıflar kalıtılabilir. Normal sınıflar sonlandırılmıştır ve kalıtım yapılamaz. Bu, kodun güvenliğini ve öngörülebilirliğini artırmak için yapılmıştır.

Yanlış kod örneği:

class Animal class Dog : Animal() // Derleme hatası: "Animal" sonlandırılmış

Konu Hakkında Bilinmeyen Sorunlar Olay Örnekleri


Hikaye

Android platformu için bir proje kapsamında bir genç geliştirici, open eklemeyi unutarak kullanıcı bileşenini özel bir View sınıfından miras almaya çalıştı. Yapı hata verdi, neden görünür değildi ve süreler kaydırıldı. Sorun, derleyici mesajı dikkatlice okununca ortaya çıktı.


Hikaye

SDK geliştirme sırasında, spesifikasyon genişletilebilir bir temel sınıf gerektiriyordu ancak bu open olmadan tanımlandı. Müşterilere teslimatta, kütüphanenin kaynak kodları değiştirilmeden genişletilemeyeceği anlaşıldı. Güncelleme yayınlamak zorunda kalındı.


Hikaye

Bir projede eski Java kodu Kotlin'e taşınırken, sınıfların varsayılan olarak kapalı olduğu unutuldu. Mock'ları kullanan çoğu birim testi derlenmeyi durdurdu ve bu da sürüm sürecini yavaşlattı. Sadece open eklenmesiyle sorun çözüldü.