Kotlinova abstraktná trieda a abstraktní členovia

V tomto článku sa dozviete o abstraktnej triede a o tom, ako ju implementovať v Kotline (pomocou príkladov).

Rovnako ako Java sa abstractkľúčové slovo používa na deklarovanie abstraktných tried v Kotline. Abstraktnú triedu nemožno vytvoriť inštanciou (nemôžete vytvárať objekty abstraktnej triedy). Z nich však môžete dediť podtriedy.

Členovia (vlastnosti a metódy) abstraktnej triedy nie sú abstraktní, pokiaľ abstractna ich abstraktné použitie výslovne nepoužívate kľúčové slovo. Uveďme si príklad:

 abstraktná trieda Osoba (vek: Int = 40 zábavných displaySSN (ssn: Int) (println ("Moje SSN je $ ssn.")) abstraktná zábavná displayJob (popis: String))

Tu,

  • vytvorí sa abstraktná trieda Person. Nemôžete vytvárať objekty triedy.
  • trieda má neabstrahujúcu vlastnosť age a neabstrahovú metódu displaySSN(). Ak potrebujete týchto členov v podtriede prepísať, mali by byť označení openkľúčovým slovom.
  • Hodina má abstraktnú metódu displayJob(). Nemá žiadnu implementáciu a musí byť prepísaná vo svojich podtriedach.

Poznámka: Abstraktné triedy sú vždy otvorené. Na openzdedenie podtried z nich nemusíte výslovne používať kľúčové slovo.

Príklad: Kotlinova abstraktná trieda a metóda

 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) )

Po spustení programu bude výstup:

Moje meno je Jack Smith. Som učiteľ matematiky. Moje SSN je 23123.

Tu je trieda Teacherodvodená od abstraktnej triedy Person.

Vytvorí sa inštancia objektového konektora triedy Učiteľ. "Jack Smith"Pri vytváraní sme prešli ako parameter k primárnemu konštruktoru. Týmto sa vykoná inicializačný blok Persontriedy.

Potom sa displayJob()metóda volá pomocou objektu jack. Upozorňujeme, že displayJob()metóda je v základnej triede deklarovaná ako abstraktná a v odvodenej triede prepísaná.

Nakoniec sa displaySSN()metóda volá pomocou objektu jack. Metóda nie je abstraktná a je deklarovaná v triede Person (a nedeklarovaná v Teachertriede).

Odporúčame prečítať : Kotlinské rozhrania

Rozhrania Kotlin sú podobné abstraktným triedam. Rozhrania však nemôžu ukladať stav, zatiaľ čo abstraktné triedy áno.

To znamená, že rozhranie môže mať vlastnosť, ale musí byť abstraktné alebo musí poskytovať implementácie prístupového modulu. Zatiaľ čo vlastnosť abstraktnej triedy nie je povinná byť abstraktnou.

Zaujímavé články...