Kotlina abstraktā klase un kopsavilkuma dalībnieki

Šajā rakstā jūs uzzināsiet par abstrakto klasi un to, kā to īstenot Kotlīnā (ar piemēru palīdzību).

Tāpat kā Java, abstractatslēgvārds tiek izmantots, lai deklarētu abstraktas klases Kotlīnā. Abstraktu klasi nevar instantizēt (jūs nevarat izveidot abstraktas klases objektus). Tomēr jūs varat mantot apakšklases no kannām.

Abstraktās klases dalībnieki (īpašības un metodes) nav abstrakti, ja vien jūs skaidri neizmantojat abstractatslēgvārdu, lai tos padarītu abstraktus. Ņemsim piemēru:

 abstrakta klase Persona (var vecums: Int = 40 jautrs displejsSSN (ssn: Int) (println ("Mans SSN ir $ ssn.")) abstraktais jautrais displayJob (apraksts: virkne))

Šeit,

  • Persontiek izveidota abstrakta klase . Jūs nevarat izveidot klases objektus.
  • klasei ir ne abstrakta īpašuma vecums un ne abstrakta metode displaySSN(). Ja jums jāignorē šie dalībnieki apakšklasē, tie ir jāatzīmē ar openatslēgvārdu.
  • Klasei ir abstrakta metode displayJob(). Tam nav nekādas ieviešanas, un tas ir jāpārspēj apakšklasēs.

Piezīme: Abstraktās nodarbības vienmēr ir atvērtas. openLai mantotu no tām apakšklases, jums nav skaidri jāizmanto atslēgvārds.

Piemērs: Kotlina abstraktā klase un metode

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

Palaidot programmu, izeja būs:

Mani sauc Džeks Smits. Es esmu matemātikas skolotājs. Mans SSN ir 23123.

Šeit klase Teachertiek atvasināta no abstraktas klases Person.

Skolotāju klases objektu domkrats tiek instantizēts. To izveidojot, mēs esam nodoti "Jack Smith"kā parametrs primārajam konstruktoram. Tas izpilda Personklases inicializētāja bloku .

Tad displayJob()metodi sauc, izmantojot domkrata objektu. Ņemiet vērā, ka displayJob()metode tiek pasludināta par abstraktu bāzes klasē un atcelta atvasinātajā klasē.

Visbeidzot, displaySSN()metodi sauc, izmantojot domkrata objektu. Metode nav abstrakta un deklarēta Personas klasē (un nav deklarēta Teacherklasē).

Ieteicamā literatūra: Kotlin Interfaces

Kotlina saskarnes ir līdzīgas abstraktām klasēm. Tomēr saskarnes nevar saglabāt stāvokli, bet abstraktās klases var.

Nozīme, interfeisam var būt īpašums, taču tam jābūt abstraktam vai tam jānodrošina piekļuves ieviešana. Tā kā abstraktās klases īpašumam nav obligāti jābūt abstraktam.

Interesanti raksti...