Šiame straipsnyje sužinosite apie abstrakčią klasę ir kaip ją įgyvendinti Kotlin (pavyzdžių pagalba).
Kaip ir „Java“, abstract
raktinis žodis naudojamas abstrakčioms klasėms deklaruoti „Kotlin“. Abstraktios klasės negalima sukurti (negalima kurti abstrakčios klasės objektų). Tačiau jūs galite paveldėti poklasius iš jų.
Abstrakčios klasės nariai (ypatybės ir metodai) nėra abstraktūs, nebent jūs aiškiai naudojate abstract
raktinį žodį, kad jie būtų abstraktūs. Paimkime pavyzdį:
abstrakti klasė Asmuo (įvairaus amžiaus: Int = 40 linksmo ekrano SSN (ssn: Int) (println („Mano SSN yra $ ssn.“)) abstraktus linksmas ekranasDarbas (aprašas: eilutė))
Čia
- sukuriama abstrakti klasė
Person
. Negalite kurti klasės objektų. - klasė turi ne abstrakčią nuosavybės amžių ir ne abstraktų metodą
displaySSN()
. Jei reikia nepaisyti šių narių poklasyje, jie turėtų būti pažymėtiopen
raktiniu žodžiu. - Klasėje yra abstraktus metodas
displayJob()
. Jis nėra įgyvendinamas ir turi būti nepaisomas jo poklasiuose.
Pastaba: Santraukos užsiėmimai visada atviri. open
Kad paveldėtumėte iš jų poklasius, nereikia aiškiai naudoti raktinio žodžio.
Pavyzdys: Kotlino abstrakti klasė ir metodas
abstract class Person(name: String) ( init ( println("My name is $name.") ) fun displaySSN(ssn: Int) ( println("My SSN is $ssn.") ) abstract fun displayJob(description: String) ) class Teacher(name: String): Person(name) ( override fun displayJob(description: String) ( println(description) ) ) fun main(args: Array) ( val jack = Teacher("Jack Smith") jack.displayJob("I'm a mathematics teacher.") jack.displaySSN(23123) )
Kai paleisite programą, išvestis bus:
Mano vardas Jackas Smithas. Esu matematikos mokytoja. Mano SSN yra 23123.
Čia klasė Teacher
gaunama iš abstrakčios klasės Person
.
Mokytojo klasės objektinis lizdas yra išaiškinamas. Kurdami jį perdavėme "Jack Smith"
kaip parametrą pirminiam konstruktoriui. Tai vykdo Person
klasės inicializatorių bloką .
Tada displayJob()
metodas vadinamas jack jack objektu. Atkreipkite dėmesį, kad displayJob()
metodas yra paskelbtas abstrakčiu bazinėje klasėje ir nepaisomas išvestinėje klasėje.
Galiausiai displaySSN()
metodas vadinamas naudojant jack jack objektą. Metodas nėra abstraktus ir deklaruojamas Asmens klasėje (ir nedeklaruojamas Teacher
klasėje).
Rekomenduojamas skaitymas: „ Kotlin“ sąsajos
Kotlino sąsajos yra panašios į abstrakčias klases. Tačiau sąsajos negali išsaugoti būsenos, o abstrakčios klasės.
Reiškia, sąsaja gali turėti savybę, tačiau ji turi būti abstrakti arba turi suteikti prieigą. Tuo tarpu abstrakčios klasės nuosavybė nėra abstrakti.