Sellest artiklist saate näidete abil teada objektide deklaratsioonidest (üksikutest) ja objektide avaldistest.
Objekti deklaratsioonid
Singleton on objektile orienteeritud muster, kus klassil võib olla ainult üks eksemplar (objekt).
Näiteks töötate rakendusel, millel on SQL-i andmebaasi taustaprogramm. Andmebaasile juurdepääsu saamiseks soovite luua ühenduse basseini, kasutades samasugust ühendust kõigi klientide jaoks. Selleks saate luua ühenduse üksikklassi kaudu, nii et iga klient saaks sama ühenduse.
Kotlin pakub lihtsat viisi üksikisikute loomiseks, kasutades objekti deklareerimise funktsiooni. Selleks kasutatakse objekti märksõna.
objekt SingletonExample (… // klassi keha …)
Ülaltoodud kood ühendab klassi deklaratsiooni ja klassi ühe eksemplari deklaratsiooni SingletonExample.
Objekti deklaratsioon võib sisaldada omadusi, meetodeid ja nii edasi. Kuid neil ei tohi olla konstruktoreid (mis on mõistlik). Miks?
Sarnaselt tavaklassi objektidele saate noode kasutades kutsuda meetodeid ja juurdepääsu omadustele .
.
Näide: objekti deklaratsioon
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") )
Programmi käivitamisel on väljund järgmine:
b = 1 tulemus = 12
Objektide deklaratsioon võib pärida klassidest ja liidestest sarnaselt tavaliste klassidega.
Üksikud ja sõltuvuse süstimine
Objektideklaratsioonidest võib mõnikord kasu olla. Kuid need ei ole ideaalsed suurtes tarkvarasüsteemides, mis suhtlevad paljude teiste süsteemi osadega.
Soovitatav lugemine: sõltuvuse süstimine ja Singletoni kujundusmuster
Kotlini objekti väljendid
Objekti märksõna saab kasutada ka anonüümsete klasside objektide loomiseks. Neid kasutatakse juhul, kui peate looma mõne klassi või liidese väikese modifikatsiooni objekti ilma selle alaklassis deklareerimata. Näiteks ,
window.addMouseListener (objekt: MouseAdapter () (alistab lõbus hiireklõpsatud (e: MouseEvent) (// …) alistab lõbus mouseEntered (e: MouseEvent) (//…)))
(Näide on võetud Kotlini ametlikust lehelt.)
Siin kuulutatakse anonüümne objekt MouseAdapteri klassi laiendavaks. Programm alistab kaks MouseAdapter
meetodit: mouseClicked()
ja mouseEntered()
.
Vajadusel saate anonüümsele objektile määrata nime ja salvestada selle muutujasse. Näiteks,
val obj = object: MouseAdapter () (alistab lõbus hiireklõpsatud (e: MouseEvent) (//…) alistab lõbus mouseEntered (e: MouseEvent) (//…))
Näide: Kotlini objekti avaldis
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() )
Programmi käivitamisel on väljund järgmine:
Toitu sööma. Inimestega rääkimine. Ma ei palveta. Olen ateist.
Siin salvestatakse anonüümne objekt muutuvasse ateisti, mis rakendab pray()
meetodiga Inimklassi.
Kui rakendate klassi, millel on anonüümse objekti deklareerimiseks konstruktor, peate edastama sobivad konstruktori parameetrid. Näiteks,
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() )
Programmi käivitamisel on väljund järgmine:
nimi: Jack, vanus: 29 Toidu söömine. Inimestega rääkimine. Ma ei palveta. Olen ateist.