Pernyataan dan Ekspresi Objek Kotlin

Dalam artikel ini, anda akan belajar tentang deklarasi objek (singleton) dan ekspresi objek dengan bantuan contoh.

Deklarasi Objek

Singleton adalah corak berorientasikan objek di mana kelas hanya boleh mempunyai satu contoh (objek).

Sebagai contoh, anda menggunakan aplikasi yang mempunyai backend pangkalan data SQL. Anda ingin membuat kumpulan sambungan untuk mengakses pangkalan data sambil menggunakan semula sambungan yang sama untuk semua klien. Untuk ini, anda boleh membuat sambungan melalui kelas single sehingga setiap pelanggan mendapat sambungan yang sama.

Kotlin menyediakan cara mudah untuk membuat singleton menggunakan ciri deklarasi objek. Untuk itu, kata kunci objek digunakan.

 objek SingletonExample (… // badan kelas…)

Kod di atas menggabungkan pengisytiharan kelas dan pengisytiharan Singleton Contoh tunggal kelas.

Perisytiharan objek boleh mengandungi sifat, kaedah dan sebagainya. Namun, mereka tidak dibenarkan mempunyai pembina (yang masuk akal). Kenapa?

Sama dengan objek kelas biasa, anda boleh memanggil kaedah dan mengakses sifat dengan menggunakan .notasi.

Contoh: Deklarasi Objek

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

Semasa anda menjalankan program, outputnya adalah:

 b = 1 hasil = 12

Deklarasi objek boleh diwarisi dari kelas dan antara muka dengan cara yang serupa seperti kelas biasa.

Suntikan Singleton dan Ketergantungan

Pengisytiharan objek kadang-kadang berguna. Walau bagaimanapun, ia tidak sesuai dalam sistem perisian besar yang berinteraksi dengan banyak bahagian sistem yang lain.

Bacaan yang Disarankan: Corak Reka Bentuk Suntikan Ketergantungan & Singleton

Ekspresi objek Kotlin

Kata kunci objek juga boleh digunakan untuk membuat objek kelas tanpa nama yang dikenali sebagai objek tanpa nama. Mereka digunakan jika anda perlu membuat objek sedikit pengubahsuaian dari beberapa kelas atau antara muka tanpa menyatakan subkelas untuknya. Sebagai contoh ,

 window.addMouseListener (objek: MouseAdapter () (ganti tetikus yang menyeronokkan. Klik (e: MouseEvent) (//…) ganti tetikus yang menyeronokkan. Dimasukkan (e: MouseEvent) (//…)))

(Contohnya diambil dari halaman dokumen Kotlin rasmi.)

Di sini, objek tanpa nama dinyatakan meluaskan kelas MouseAdapter. Program ini mengatasi dua MouseAdapterkaedah: mouseClicked()dan mouseEntered().

Sekiranya perlu, anda boleh memberikan nama pada objek tanpa nama dan menyimpannya dalam pemboleh ubah. Sebagai contoh,

 val obj = objek: MouseAdapter () (ganti tetikus yang menyeronokkanKlik (e: MouseEvent) (//…) ganti tetikus yang menyeronokkanDisertakan (e: MouseEvent) (//…))

Contoh: Ekspresi Objek 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() ) 

Semasa anda menjalankan program, outputnya adalah:

Memakan makanan. Bercakap dengan orang. Saya tidak berdoa. Saya seorang ateis.

Di sini, objek tanpa nama disimpan dalam atheis pemboleh ubah yang menerapkan kelas Person dengan pray()kaedah diganti.

Sekiranya anda melaksanakan kelas yang mempunyai konstruktor untuk menyatakan objek tanpa nama, anda perlu lulus parameter pembina yang sesuai. Sebagai contoh,

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

Semasa anda menjalankan program, outputnya adalah:

nama: Jack, umur: 29 Makan makanan. Bercakap dengan orang. Saya tidak berdoa. Saya seorang ateis.

Artikel menarik...