U ovom ćete članku uz primjere naučiti o deklaracijama objekata (pojedinačnim tonovima) i izrazima objekata.
Izjave o objektima
Singleton je objektno orijentirani obrazac u kojem klasa može imati samo jedan primjerak (objekt).
Na primjer, radite na aplikaciji koja ima SQL pozadinu baze podataka. Želite stvoriti spremište veza za pristup bazi podataka uz ponovnu upotrebu iste veze za sve klijente. Za to možete uspostaviti vezu putem singleton klase tako da svaki klijent dobije istu vezu.
Kotlin pruža jednostavan način za stvaranje jednotonaca pomoću značajke deklaracije objekta. Za to se koristi ključna riječ objekt.
objekt SingletonExample (… // tijelo klase …)
Gornji kod kombinira deklaraciju klase i deklaraciju jednog primjerka SingletonExample klase.
Deklaracija objekta može sadržavati svojstva, metode i tako dalje. Međutim, oni ne smiju imati konstruktore (što ima smisla). Zašto?
Slično objektima normalne klase, možete pozivati metode i pristupiti svojstvima pomoću .
notacije.
Primjer: 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") )
Kada pokrenete program, izlaz će biti:
b = 1 rezultat = 12
Deklaracija objekta može naslijediti iz klasa i sučelja na sličan način kao i normalne klase.
Jednostruki i ubrizgavanje ovisnosti
Deklaracije objekata mogu ponekad biti korisne. Međutim, oni nisu idealni u velikim softverskim sustavima koji komuniciraju s mnogim drugim dijelovima sustava.
Preporučena literatura: Ubrizgavanje ovisnosti i uzorak dizajna pojedinca
Kotlin objekt Izrazi
Ključna riječ objekt može se koristiti i za stvaranje objekata anonimne klase poznatih kao anonimni objekti. Koriste se ako trebate stvoriti objekt blage modifikacije neke klase ili sučelja, a da za to ne prijavite podklasu. Na primjer ,
window.addMouseListener (objekt: MouseAdapter () (nadjačati zabavni mouseClicked (e: MouseEvent) (// …) nadjačati zabavni mouseEntered (e: MouseEvent) (// …)))
(Primjer je preuzet sa službene stranice dokumenata Kotlin.)
Ovdje je anonimni objekt proglašen proširivanjem klase MouseAdapter. Program nadjačava dvije MouseAdapter
metode: mouseClicked()
i mouseEntered()
.
Ako je potrebno, anonimnom objektu možete dodijeliti ime i spremiti ga u varijablu. Na primjer,
val obj = objekt: MouseAdapter () (nadjačati zabavni mouseClicked (e: MouseEvent) (// …) nadjačati zabavni mouseEntered (e: MouseEvent) (// …))
Primjer: Izražavanje objekta Kotlin
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() )
Kada pokrenete program, izlaz će biti:
Jesti hranu. Razgovor s ljudima. Ja se ne molim. Ja sam ateist.
Ovdje se anonimni objekt pohranjuje u varijablu ateist koja implementira klasu Person pray()
metodom je nadjačana.
Ako implementirate klasu koja ima konstruktor za deklariranje anonimnog objekta, morate proslijediti odgovarajuće parametre konstruktora. Na primjer,
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() )
Kada pokrenete program, izlaz će biti:
ime: Jack, dob: 29 Jesti hranu. Razgovor s ljudima. Ja se ne molim. Ja sam ateist.