Deklarasi dan Ekspresi Objek Kotlin

Pada artikel ini, Anda akan belajar tentang deklarasi objek (lajang) dan ekspresi objek dengan bantuan contoh.

Deklarasi Objek

Singleton adalah pola berorientasi objek di mana kelas hanya dapat memiliki satu instance (objek).

Misalnya, Anda sedang mengerjakan aplikasi yang memiliki backend database SQL. Anda ingin membuat kumpulan koneksi untuk mengakses database sambil menggunakan kembali koneksi yang sama untuk semua klien. Untuk ini, Anda dapat membuat koneksi melalui kelas singleton sehingga setiap klien mendapatkan koneksi yang sama.

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

 objek SingletonExample (… // isi kelas…)

Kode di atas menggabungkan deklarasi kelas dan deklarasi satu instance SingletonExample kelas.

Deklarasi objek dapat berisi properti, metode, dan sebagainya. Namun, mereka tidak diperbolehkan memiliki konstruktor (yang masuk akal). Mengapa?

Mirip dengan objek kelas normal, Anda dapat memanggil metode dan mengakses properti 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") )

Saat Anda menjalankan program, hasilnya adalah:

 b = 1 hasil = 12

Deklarasi objek dapat mewarisi dari kelas dan antarmuka dengan cara yang mirip seperti kelas normal.

Singletons and Dependency Injection

Deklarasi objek terkadang berguna. Namun, mereka tidak ideal dalam sistem perangkat lunak besar yang berinteraksi dengan banyak bagian lain dari sistem.

Bacaan yang Direkomendasikan: Injeksi Ketergantungan & pola Desain Tunggal

Ekspresi objek Kotlin

Kata kunci objek juga dapat digunakan untuk membuat objek dari kelas anonim yang dikenal sebagai objek anonim. Mereka digunakan jika Anda perlu membuat objek dengan sedikit modifikasi dari beberapa kelas atau antarmuka tanpa mendeklarasikan subkelas untuknya. Sebagai contoh ,

 window.addMouseListener (object: MouseAdapter () (menimpa fun mouseClicked (e: MouseEvent) (//…) menimpa mouseEntered menyenangkan (e: MouseEvent) (//…)))

(Contoh diambil dari halaman dokumen resmi Kotlin.)

Di sini, objek anonim dideklarasikan memperluas kelas MouseAdapter. Program ini menimpa dua MouseAdaptermetode: mouseClicked()dan mouseEntered().

Jika perlu, Anda dapat menetapkan nama ke objek anonim dan menyimpannya dalam variabel. Sebagai contoh,

 val obj = object: MouseAdapter () (menimpa kesenangan mouseClicked (e: MouseEvent) (//…) menimpa mouseEntered menyenangkan (e: MouseEvent) (//…))

Contoh: Kotlin Object Expression

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

Saat Anda menjalankan program, hasilnya adalah:

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

Di sini, objek anonim disimpan dalam variabel ateis yang mengimplementasikan kelas Person dengan pray()metode yang diganti.

Jika Anda mengimplementasikan kelas yang memiliki konstruktor untuk mendeklarasikan objek anonim, Anda harus meneruskan parameter konstruktor 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() ) 

Saat Anda menjalankan program, hasilnya adalah:

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

Artikel yang menarik...