Kotlin tilida 'super' kalit so'zining qanday ishlashini tushuntiring.
sobes.tech AI
AIdan javob
Kalit so'z super ota sinfning (xususiyatlar, metodlar) a'zolariga ota sinfdan kirish uchun ishlatiladi.
Asosiy foydalanish usullari:
-
Ota sinfning konstruktorini chaqirish: Ko'pincha, bolalar sinfining konstruktorida ota sinfning mos konstruktorini chaqirish uchun ishlatiladi. Bu majburiy bo'lsa, ota sinf parametrli asosiy konstruktorga ega bo'lsa.
open class Parent(val name: String) class Child(name: String) : Parent(name) { // Child konstruktor ota sinf konstruktorini chaqiradi, // name parametrini o'tkazib. } -
Bolalar sinfida qayta belgilangan ota sinf a'zolariga kirish: Bu ota sinfdagi metod yoki xususiyatning amalga oshirilishiga kirish imkonini beradi, hatto ular
overrideyordamida qayta belgilangan bo'lsa ham.open class Base { open fun greet() { println("Hello from Base") } open val value: Int = 1 } class Derived : Base() { override fun greet() { super.greet() // Base'dan greet() chaqirish println("Derived'dan Salom") } override val value: Int = 2 get() { println("Derived qiymatiga kirish") return super.value + 1 // Base'dan value ga kirish } } -
Aniq bir supertip a'zolariga kirish (ko'p meros olish holatida): Agar sinf bir nechta interfeyslarni amalga oshirsa, ular bir xil nomli a'zolarga ega bo'lsa,
superbilan birga interfeys nomini kiritish (super<TypeName>) orqali qaysi interfeys a'zosi bilan ishlashni aniq belgilash mumkin.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 dan foo() chaqirish super<MyInterface2>.foo() // MyInterface2 dan foo() chaqirish } }