Kotlinov abstraktni tečaj in člani izvlečkov

V tem članku boste spoznali abstraktni tečaj in kako ga uporabiti v Kotlinu (s pomočjo primerov).

Tako kot Java abstractse tudi v Kotlinu ključna beseda uporablja za razglasitev abstraktnih razredov. Abstraktnega razreda ni mogoče ustvariti (ne morete ustvariti predmetov abstraktnega razreda). Lahko pa podrazrede podedujete od can them.

Člani (lastnosti in metode) abstraktnega razreda niso abstraktni, razen če abstractza njihovo abstrakcijo eksplicitno uporabite ključno besedo. Vzemimo primer:

 abstraktni razred Oseba (var age: Int = 40 fun displaySSN (ssn: Int) (println ("My SSN is $ ssn.")) abstraktno zabavno displayJob (opis: String))

Tukaj,

  • ustvarjen je abstraktni razred Person. Predmetov razreda ne morete ustvariti.
  • razred ima abstraktno lastnostno starost in abstraktno metodo displaySSN(). Če morate te člane v podrazredu preglasiti, jih označite s openključno besedo.
  • Predavanje ima abstraktno metodo displayJob(). Nima nobene izvedbe in jo je treba v svojih podrazredih preglasiti.

Opomba: abstraktni razredi so vedno odprti. Za openpodedovanje podrazredov po njih ni treba izrecno uporabljati ključne besede.

Primer: Kotlinov abstraktni razred in metoda

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

Ko zaženete program, bo rezultat:

Moje ime je Jack Smith. Sem učiteljica matematike. Moj SSN je 23123.

Tu je razred Teacherizpeljan iz abstraktnega razreda Person.

Primerek predmeta predmeta Učitelj je instanciran. "Jack Smith"Med ustvarjanjem smo kot parameter predali primarnemu konstruktorju. S tem se izvrši inicializacijski blok Personrazreda.

Nato se displayJob()metoda pokliče z uporabo predmeta jack. Upoštevajte, da je displayJob()metoda v osnovnem razredu razglašena za abstraktno in v izpeljanem razredu razveljavljena.

Na koncu se displaySSN()metoda pokliče z uporabo predmeta jack. Metoda ni abstraktna in je deklarirana v razredu Person (in ni deklarirana v Teacherrazredu).

Priporočeno branje: Kotlinovi vmesniki

Kotlinovi vmesniki so podobni abstraktnim razredom. Vendar vmesniki ne morejo shranjevati stanja, medtem ko lahko abstraktni razredi.

To pomeni, da ima vmesnik lastnost, vendar mora biti abstrakten ali pa mora zagotavljati izvedbe dostopnikov. Ker pa lastnost abstraktnega razreda ni abstraktna.

Zanimive Članki...