Magyarázza el, hogyan működik a 'super' kulcsszó a Kotlin nyelvben.
sobes.tech MI
Válasz az MI-től
A super kulcsszó arra szolgál, hogy hozzáférjünk a szülőosztály (szülőosztályok) tagjaihoz (tulajdonságok, metódusok) az alosztályból.
Főbb használati módok:
-
A szülőosztály konstruktorának hívása: Gyakran használják az alosztály konstruktorában a megfelelő szülő konstruktorának meghívására. Ez kötelező, ha a szülőosztálynak van elsődleges konstruktor paraméterekkel.
open class Parent(val name: String) class Child(name: String) : Parent(name) { // A Child konstruktor hívja a Parent konstruktorát, // átadva a name paramétert. } -
A szülőosztály tagjaihoz való hozzáférés, felülírtak esetén: Lehetővé teszi, hogy hozzáférjünk a szülőosztály metódusának vagy tulajdonságának implementációjához, még akkor is, ha azokat felülírták (
override) a gyermekosztályban.open class Base { open fun greet() { println("Hello from Base") } open val value: Int = 1 } class Derived : Base() { override fun greet() { super.greet() // A Base-ből hívás println("Derived-ből üdvözlet") } override val value: Int = 2 get() { println("Hozzáférés a Derived értékéhez") return super.value + 1 // Hozzáférés a Base értékéhez } } -
Hozzáférés egy adott szuper típus tagjaihoz (többszörös öröklés esetén): Ha egy osztály több interfészt valósít meg, amelyek ugyanazokat a tagokat tartalmazzák, a
supera szögletes zárójelekben (super<TypeName>) megadva egyértelművé teszi, hogy melyik interfész melyik tagjára hivatkozunk.interface MyInterface1 { fun foo() { println("MyInterface1 foo") } } interface MyInterface2 { fun foo() { println("MyInterface2 foo") } } class MyClass : MyInterface1, MyInterface2 { override fun foo() { super<MyInterface1>.foo() // A MyInterface1-ből hívás super<MyInterface2>.foo() // A MyInterface2-ből hívás } }