Kotlin sažetak i sažetak članova

U ovom ćete članku naučiti o apstraktnoj klasi i kako je primijeniti u Kotlinu (uz pomoć primjera).

Kao i Java, abstractključna riječ koristi se za deklariranje apstraktnih klasa u Kotlinu. Apstraktna klasa ne može se instancirati (ne možete stvoriti objekte apstraktne klase). Međutim, podnaslove možete naslijediti iz njih.

Članovi (svojstva i metode) apstraktne klase nisu apstraktni, osim ako eksplicitno koristite abstractključnu riječ da biste ih učinili apstraktnim. Uzmimo primjer:

 sažetak klase Osoba (var age: Int = 40 zabava displaySSN (ssn: Int) (println ("Moj SSN je $ ssn.")) sažetak zabave displayJob (opis: String))

Ovdje,

  • stvara se apstraktna klasa Person. Ne možete stvoriti objekte klase.
  • razred ima ne-apstraktnu dob svojstva i ne-apstraktnu metodu displaySSN(). Ako trebate nadjačati ove članove u podrazredu, trebali bi biti označeni openključnom riječi.
  • Predavanje ima apstraktnu metodu displayJob(). Nema nikakvu implementaciju i mora se nadjačati u svojim podrazredima.

Napomena: Sažeci su uvijek otvoreni. Ne trebate izričito koristiti openključnu riječ za nasljeđivanje potklasa od njih.

Primjer: Sažetak klase i metode Kotlina

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

Kada pokrenete program, izlaz će biti:

Zovem se Jack Smith. Ja sam profesor matematike. Moj SSN je 23123.

Ovdje je klasa Teacherizvedena iz apstraktne klase Person.

Instanciran je objektni priključak klase Teacher. Prilikom stvaranja proslijedili smo "Jack Smith"kao parametar primarnom konstruktoru. Ovim se izvršava blok inicijalizatora Personklase.

Zatim se displayJob()metoda poziva pomoću objekta jack. Imajte na umu da je displayJob()metoda proglašena apstraktnom u osnovnoj klasi, a nadjačana u izvedenoj klasi.

Napokon, displaySSN()metoda se poziva pomoću objekta jack. Metoda nije apstraktna i deklarirana je u klasi Person (i nije deklarirana u Teacherklasi).

Preporučena literatura: Kotlin sučelja

Kotlin sučelja slična su apstraktnim klasama. Međutim, sučelja ne mogu pohraniti stanje, dok apstraktne klase to mogu.

Znači, sučelje može imati svojstvo, ali mora biti apstraktno ili mora osigurati implementacije pristupa. Iako svojstvo apstraktne klase nije obavezno da bude apstraktno.

Zanimljivi članci...