Kotlin тилинде 'super' ачкыч сөзүнүн иштешин түшүндүрүңүз.
sobes.tech AI
AIден жооп
Ключевое слово super колдонулат ата-эне класстын мүчөлөрүнө (мүлктөрүнө, ыкмаларына) балдар класстан жетүү үчүн.
Негизги колдонуу варианттары:
-
Ата-эне класстын конструкторун чакыруу: Көп учурда балдар классынын конструкторунда ата-эне конструкторун чакыруу үчүн колдонулат. Бул м必ий, эгер ата-эне класста негизги конструктор параметрлер менен болсо:
open class Parent(val name: String) class Child(name: String) : Parent(name) { // Child конструктору Parent конструкторун чакырат, // name параметрин өткөрүп берүү менен: } -
Ата-эне класстын кайра аныкталган мүчөлөрүнө жетүү: Мүчөлөргө (методдорго, мүлктөргө) кайрылуу, эгер алар кайра аныкталган болсо да (override колдонуу менен) мүмкүн:
open class Base { open fun greet() { println("Hello from Base") } open val value: Int = 1 } class Derived : Base() { override fun greet() { super.greet() // Base классынан greet() чакыруу println("Hello from Derived") } override val value: Int = 2 get() { println("Accessing Derived value") return super.value + 1 // Base класстын valueсына жетүү } } -
Конкреттүү супертиптин мүчөлөрүнө жетүү (көп мурас интерфейстеринде): Эгер класс бир нече интерфейсти ишке ашырса жана алардын бирдей аталыштагы мүчөлөрү болсо,
superжана интерфейс аталышы менен кагазда (super<TypeName>) кайрылуу, кайсы интерфейсдин кайсы мүчөсүнө кайрылууну так көрсөтүүгө мүмкүндүк берет: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дин foo() чакыруу super<MyInterface2>.foo() // MyInterface2дин foo() чакыруу } }