Kotlin dilinde 'super' anahtar kelimesinin nasıl çalıştığını açıklayın.
sobes.tech yapay zeka
AI'dan gelen yanıt
Anahtar kelime super, alt sınıftan ebeveyn sınıfın üyelerine (özellikler, metodlar) erişmek için kullanılır.
Ana kullanım biçimleri:
-
Ebeveyn sınıfın yapıcısını çağırmak: Sıklıkla, alt sınıfın yapıcısında ebeveynin karşılık gelen yapıcısını çağırmak için kullanılır. Bu, ebeveyn sınıfın parametre alan birincil yapıcısı varsa zorunludur.
open class Parent(val name: String) class Child(name: String) : Parent(name) { // Child yapıcısı, Parent yapıcısını çağırır, // name parametresini geçirerek. } -
Alt sınıfta yeniden tanımlanmış ebeveyn üyelerine erişim: Bir metod veya özelliğin ebeveyn sınıfındaki uygulamasına, alt sınıfta yeniden tanımlanmış olsa bile, erişmek için kullanılır (
overrideile).open class Base { open fun greet() { println("Hello from Base") } open val value: Int = 1 } class Derived : Base() { override fun greet() { super.greet() // Base'ten greet() çağrısı println("Derived'ten Merhaba") } override val value: Int = 2 get() { println("Derived değerine erişiliyor") return super.value + 1 // Base'ten value erişimi } } -
Belirli bir üst tipe ait üyeye erişim (çoklu arayüz kalıtımı durumunda): Bir sınıf, aynı isimde üyeleri olan birkaç arayüzü uygularsa,
superile birlikte köşeli parantez içinde arayüz adını (super<TypeName>) belirterek, hangi arayüzün üyesine erişileceği netleştirilebilir.interface MyInterface1 { fun foo() { println("MyInterface1 foo") } } interface MyInterface2 { fun foo() { println("MyInterface2 foo") } } class MyClass : MyInterface1, MyInterface2 { override fun foo() { super<MyInterface1>.foo() // MyInterface1'den foo() çağrısı super<MyInterface2>.foo() // MyInterface2'den foo() çağrısı } }