Kotlino santraukos klasė ir santraukos nariai

Šiame straipsnyje sužinosite apie abstrakčią klasę ir kaip ją įgyvendinti Kotlin (pavyzdžių pagalba).

Kaip ir „Java“, abstractraktinis ž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 abstractraktinį ž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ėti openraktiniu ž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. openKad 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ė Teachergaunama 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 Personklasė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 Teacherklasė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.

Įdomios straipsniai...