Изјаве и изрази предмета Котлин

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

Изјаве о објектима

Синглетон је објектно оријентисани образац где класа може имати само једну инстанцу (објект).

На пример, радите на апликацији која има позадину СКЛ базе података. Желите да направите спремиште веза за приступ бази података, док поново користите исту везу за све клијенте. За ово можете успоставити везу путем синглетон класе тако да сваки клијент добије исту везу.

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

 објект СинглетонЕкампле (… // тело класе…)

Горњи код комбинује декларацију класе и декларацију појединачне инстанце СинглетонЕкампле класе.

Декларација објекта може садржати својства, методе и тако даље. Међутим, они не смеју да имају конструкторе (што има смисла). Зашто?

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

Пример: Изјава о објекту

 object Test ( private var a: Int = 0 var b: Int = 1 fun makeMe12(): Int ( a = 12 return a ) ) fun main(args: Array) ( val result: Int result = Test.makeMe12() println("b = $(Test.b)") println("result = $result") )

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

 б = 1 резултат = 12

Декларација објекта може наследити класе и интерфејсе на сличан начин као и нормалне класе.

Једноструко убризгавање и зависност

Декларације објеката могу понекад бити корисне. Међутим, они нису идеални у великим софтверским системима који су у интеракцији са многим другим деловима система.

Препоручена литература: Убризгавање зависности и образац дизајна појединачног дизајна

Котлин објект Изрази

Кључна реч објецт такође се може користити за креирање објеката анонимне класе познатих као анонимни објекти. Користе се ако треба да направите објекат благе модификације неке класе или интерфејса, а да за то не пријавите подкласу. На пример ,

 виндов.аддМоусеЛистенер (објецт: МоусеАдаптер () (оверриде фун моусеЦлицкед (е: МоусеЕвент) (// …) оверриде фун моусеЕнтеред (е: МоусеЕвент) (// …)))

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

Овде је анонимни објекат проглашен проширивањем класе МоусеАдаптер. Програм надјачава две MouseAdapterметоде: mouseClicked()и mouseEntered().

Ако је потребно, анонимном објекту можете доделити име и сачувати га у променљивој. На пример,

 вал обј = објект: МоусеАдаптер () (надјачати забавну моусеЦлицкед (е: МоусеЕвент) (// …) надјачати забавну моусеЕнтеред (е: МоусеЕвент) (// …))

Пример: Изражавање објекта Котлин

 open class Person() ( fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person() ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

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

Једу храну. Разговор са људима. Не молим се. Ја сам атеиста.

Овде се анонимни објекат чува у променљивој атеисту која имплементира класу Персон pray()методом је замењена.

Ако имплементирате класу која има конструктор за декларацију анонимног објекта, морате прослиједити одговарајуће параметре конструктора. На пример,

 open class Person(name: String, age: Int) ( init ( println("name: $name, age: $age") ) fun eat() = println("Eating food.") fun talk() = println("Talking with people.") open fun pray() = println("Praying god.") ) fun main(args: Array) ( val atheist = object : Person("Jack", 29) ( override fun pray() = println("I don't pray. I am an atheist.") ) atheist.eat() atheist.talk() atheist.pray() ) 

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

име: Јацк, старост: 29 Једење хране. Разговор са људима. Не молим се. Ја сам атеиста.

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