Котлин апстрактни час и сажетак чланова

У овом чланку ћете научити о апстрактној класи и како је применити у Котлину (уз помоћ примера).

Као и Јава, abstractкључна реч се користи за декларисање апстрактних класа у Котлину. Апстрактна класа не може бити инстанцирана (не можете креирати објекте апстрактне класе). Међутим, поднаслове можете наследити из њих.

Чланови (својства и методе) апстрактне класе нису апстрактни, осим ако експлицитно не користите abstractкључну реч да бисте их учинили апстрактним. Узмимо пример:

 апстрактна класа Особа (вар аге: Инт = 40 забава дисплаиССН (ссн: Инт) (принтлн („Мој ССН је $ ссн.“)) апстрактна забава дисплаиЈоб (опис: Низ)

Ево,

  • ствара се апстрактна класа Person. Не можете креирати објекте класе.
  • разред има не-апстрактно својство старости и не-апстрактну методу displaySSN(). Ако требате да замените ове чланове у подкласи, они би требали бити означени openкључном речи.
  • Час има апстрактну методу displayJob(). Нема никакву имплементацију и мора се поништити у својим подкласама.

Напомена: Апстрактни часови су увек отворени. Не требате изричито да користите openкључну реч за наслеђивање поткласа од њих.

Пример: Котлин апстрактна класа и метода

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

Када покренете програм, излаз ће бити:

Зовем се Јацк Смитх. Ја сам професор математике. Мој ССН је 23123.

Овде је класа Teacherизведена из апстрактне класе Person.

Инстанциран је објектни прикључак класе Теацхер. "Jack Smith"Приликом креирања проследили смо као параметар примарном конструктору. Овим се извршава блок иницијализатора Personкласе.

Затим се displayJob()метода позива помоћу објекта јацк. Имајте на уму да је displayJob()метода проглашена апстрактном у основној класи, а замењена у изведеној класи.

Коначно, displaySSN()метода се позива помоћу објекта јацк. Метода није апстрактна и декларисана је у класи Персон (и није декларисана у Teacherкласи).

Препоручена литература: Котлин интерфејси

Котлин интерфејси су слични апстрактним класама. Међутим, интерфејси не могу да чувају стање, док апстрактне класе то могу.

Значи, интерфејс може имати својство, али мора бити апстрактно или мора да обезбеди имплементације приступа. Док својство апстрактне класе није обавезно да буде апстрактно.

Занимљиви Чланци...