Junior
Kā darbojas mantošana Kotlin?
sobes.tech AI
Atbilde no AI
Kotlin manto princips balstīts uz atvērtu klasu principu. Noklusējuma režīmā visas klases ir slēgtas (finals), un, lai padarītu klasi mantošanu, to skaidri jānorāda ar atslēgas vārdu open.
Galvenie punkti:
- Atvērtas klases: Vecāku klasei jābūt atzīmētai kā
open.open class Base { // ... } - Mantošana: Mantošana tiek veikta ar divpunkti (
:), pēc kura seko vecāku klases nosaukums un, ja nepieciešams, tās konstruktora izsaukums.class Derived : Base() { // ... } - Metodēm un īpašībām pārrakstīšana: Lai pārrakstītu vecāku klases metodes vai īpašības, tās jānorāda kā
open, un mantošanas klasē jālietooverridevārds.Ja vecāku metode vai īpašība nav atzīmēta kāopen class Base { open fun process() { /* ... */ } open val value: Int = 0 } class Derived : Base() { override fun process() { /* ... */ } override val value: Int = 1 }open, to pārrakstīt nav iespējams. - Piekļuve vecāku klases locekļiem: Piekļuve vecāku klases locekļiem no mantošanas klases tiek veikta ar
supervārdu.class Derived : Base() { override fun process() { super.process() // Vecāku klases metodes izsaukums // ... } } - Konstruktori: Ja vecāku klasei ir parametrus saturošs konstruktors, mantošanas klasei tas jāizsauc savā deklarācijā.
open class Base(name: String) { // ... } class Derived(name: String, age: Int) : Base(name) { // ... } - Saskarnes: Klase var realizēt vairākas saskarnes, kuras var norādīt pēc mantošanas klases, atdalītas ar komatu. Saskarnes pēc noklusējuma ir "atvērtas" realizācijai.
interface MyInterface { fun doSomething() } class MyClass : Base(), MyInterface { override fun doSomething() { /* ... */ } } - Abstraktas klases: Abstraktas klases tiek izmantotas daļējas realizācijas noteikšanai un satur abstraktus metodes un īpašības (
abstract), kuras jārealizē mantošanas klasēs. Abstraktas locekļi neprasaopen. Abstrakta klase arī neprasaopenmantošanai.abstract class AbsBase { abstract fun abstractMethod() open fun concreteMethod() { /* ... */ } } class AbsDerived : AbsBase() { override fun abstractMethod() { /* ... */ } }
Kopumā Kotlin tiecas uz skaidrību, pieprasot open lietošanu mantošanai un pārrakstīšanai.