Izjave in izrazi predmetov Kotlin

V tem članku boste s pomočjo primerov izvedeli več o deklaracijah objektov (singletoni) in izrazih objektov.

Izjave o objektih

Singleton je objektno usmerjen vzorec, kjer ima lahko razred samo en primerek (objekt).

Na primer, delate z aplikacijo, ki ima zaledje baze podatkov SQL. Ustvariti želite povezovalno področje za dostop do baze podatkov in hkrati uporabiti isto povezavo za vse odjemalce. V ta namen lahko ustvarite povezavo prek enojnega razreda, tako da bo vsak odjemalec dobil isto povezavo.

Kotlin ponuja enostaven način za ustvarjanje enotonov z uporabo funkcije deklaracije objektov. Za to se uporablja ključna beseda objekt.

 objekt SingletonExample (… // telo razreda…)

Zgornja koda združuje izjavo razreda in izjavo posameznega primerka SingletonExample razreda.

Deklaracija objekta lahko vsebuje lastnosti, metode itd. Vendar pa ne smejo imeti konstruktorjev (kar je smiselno). Zakaj?

Podobno kot predmeti običajnega razreda lahko tudi s pomočjo .zapisa pokličete metode in dostopate do lastnosti .

Primer: Izjava o objektu

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

Ko zaženete program, bo rezultat:

 b = 1 rezultat = 12

Deklaracija objekta lahko podeduje razrede in vmesnike na podoben način kot običajni razredi.

Enojni vbrizg in vbrizgavanje odvisnosti

Izjave o objektih so včasih koristne. Niso pa idealni v velikih sistemih programske opreme, ki sodelujejo z mnogimi drugimi deli sistema.

Priporočeno branje: Vzorec vbrizgavanja odvisnosti in vzorec oblikovanja posameznih modelov

Kotlin objekt Izrazi

Ključno besedo object lahko uporabimo tudi za ustvarjanje predmetov anonimnega razreda, znanega kot anonimni predmeti. Uporabljajo se, če morate ustvariti predmet rahlega spreminjanja nekega razreda ali vmesnika, ne da bi zanj razglasili podrazred. Na primer

 window.addMouseListener (objekt: MouseAdapter () (preglasitev zabavnega mouseClicked (e: MouseEvent) (//…) preglasitev zabavnega mouseEntered (e: MouseEvent) (// …)))

(Primer je povzet z uradne strani Dokumenti Kotlin.)

Tu je anonimni objekt razglašen za razširitev razreda MouseAdapter. Program preglasi dve MouseAdaptermetodi: mouseClicked()in mouseEntered().

Po potrebi lahko anonimnemu predmetu dodelite ime in ga shranite v spremenljivko. Na primer

 val obj = objekt: MouseAdapter () (preglasitev zabavnega mouseClicked (e: MouseEvent) (// …) preglasitev zabavnega mouseEntered (e: MouseEvent) (// …))

Primer: Kotlinov izraz predmeta

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

Ko zaženete program, bo rezultat:

Uživanje hrane. Pogovor z ljudmi. Ne molim. Sem ateist.

Tu je anonimni objekt shranjen v spremenljivki ateist, ki implementira razred osebe z pray()metodo.

Če izvajate razred, ki ima konstruktor za razglasitev anonimnega predmeta, morate predati ustrezne parametre konstruktorja. Na primer

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

Ko zaženete program, bo rezultat:

ime: Jack, starost: 29 Uživanje hrane. Pogovor z ljudmi. Ne molim. Sem ateist.

Zanimive Članki...