Kelas bersarang & Dalam di Kotlin

May 09 2023
Kotlin adalah bahasa pemrograman modern yang digunakan untuk mengembangkan aplikasi Android dan aplikasi sisi server. Salah satu fitur menarik dari Kotlin adalah dukungannya untuk kelas bersarang dan dalam.

Kotlin adalah bahasa pemrograman modern yang digunakan untuk mengembangkan aplikasi Android dan aplikasi sisi server. Salah satu fitur menarik dari Kotlin adalah dukungannya untuk kelas bersarang dan dalam. Dalam artikel ini, kita akan melihat lebih dekat pada kelas tersarang dan kelas dalam di Kotlin, dan melihat bagaimana mereka dapat digunakan untuk meningkatkan pengaturan dan struktur kode Anda.

Kelas Bersarang

Kelas bersarang adalah kelas yang didefinisikan di dalam kelas lain. Di Kotlin, Anda bisa mendefinisikan nested class hanya dengan mendeklarasikannya di dalam outer class menggunakan classkata kunci. Berikut contohnya:

class Outer {
    class Nested {
        fun `sayHello`() {
            println("Hello from Nested!")
        }
    }
}

Anda dapat membuat instance kelas bersarang menggunakan sintaks:

val nested = Outer.Nested()
nested.`sayHello`() // Output: Hello from Nested!

Salah satu manfaat menggunakan kelas bersarang adalah mereka dapat digunakan untuk mengelompokkan fungsionalitas terkait. Misalnya, Anda mungkin memiliki kelas yang mewakili tabel database, dan kelas bersarang yang mewakili kueri di tabel tersebut. Dengan menyarangkan kelas kueri di dalam kelas tabel, Anda bisa menyatukan kode terkait dan membuat kode Anda lebih teratur.

Kelas Dalam

Kelas dalam adalah kelas bersarang yang memiliki akses ke anggota kelas luarnya. Di Kotlin, Anda dapat menentukan inner class dengan menggunakan innerkata kunci sebelum classkata kunci. Berikut contohnya:

class Outer {
    private val name: String = "Outer"
    
    inner class Inner {
        fun `sayHello`() {
            println("Hello from $name.Inner!")
        }
    }
}

Anda dapat membuat instance kelas dalam menggunakan sintaks:

val outer = Outer()
val inner = outer.Inner()
inner.`sayHello`() // Output: Hello from Outer.Inner!

Salah satu manfaat menggunakan kelas dalam adalah mereka dapat mengakses anggota kelas luarnya, yang dapat berguna dalam situasi tertentu. Misalnya, Anda mungkin memiliki kelas yang merepresentasikan daftar item, dan kelas dalam yang merepresentasikan iterator di atas daftar tersebut. Dengan menjadikan iterator sebagai kelas dalam, ia dapat mengakses anggota kelas daftar, seperti ukuran dan elemennya.

Perbedaan antara kelas bersarang dan kelas dalam

Beberapa perbedaan yang jelas sebagai berikut:

  1. Akses ke Anggota Kelas Luar: Kelas bersarang tidak dapat mengakses anggota kelas luar mereka, sedangkan kelas dalam bisa. Kelas dalam memiliki referensi ke instance kelas luarnya, yang memungkinkan mereka untuk mengakses properti dan fungsinya.
  2. Lingkup: Ruang lingkup kelas bersarang terbatas pada kelas terlampir, sedangkan ruang lingkup kelas dalam terbatas pada turunan dari kelas terlampir. Ini berarti bahwa kelas dalam dapat mengakses anggota pribadi dari instance kelas luarnya.
  3. Inisialisasi: Sebuah instance dari kelas bersarang dapat dibuat tanpa sebuah instance dari kelas luarnya, sedangkan sebuah instance dari kelas dalam harus dibuat dengan sebuah instance dari kelas luarnya.
  4. Penggunaan: Kelas bersarang biasanya digunakan untuk mengelompokkan fungsionalitas terkait bersama-sama, sedangkan kelas dalam digunakan saat Anda perlu mengakses anggota kelas luar dari dalam kelas bersarang.
  5. Sintaks: Sintaks untuk mendeklarasikan kelas bersarang hanya dengan mendeklarasikannya di dalam kelas luar menggunakan classkata kunci. Sintaks untuk mendeklarasikan inner class adalah dengan menggunakan innerkata kunci sebelum classkata kunci.
  6. Penamaan: Kelas bersarang diberi nama dengan nama kelas luar diikuti dengan titik dan nama kelas bersarang. Kelas dalam diberi nama dengan nama kelas luar diikuti dengan titik dan nama kelas dalam, dan diasosiasikan dengan turunan dari kelas luar.

Kesimpulan

Kelas bertingkat dan kelas dalam adalah fitur Kotlin yang canggih yang dapat membantu Anda mengatur dan menyusun kode Anda. Dengan mengelompokkan fungsionalitas terkait, Anda dapat membuat kode Anda lebih teratur dan lebih mudah dikelola. Dan dengan menggunakan inner class, Anda dapat memberikan class tersebut akses ke anggota outer class mereka, yang dapat berguna dalam situasi tertentu. Jadi lain kali Anda