Dalam artikel ini, Anda akan mempelajari tentang 4 pengubah visibilitas di Kotlin dan cara kerjanya dalam skenario yang berbeda.
Pengubah visibilitas adalah kata kunci yang mengatur visibilitas (aksesibilitas) kelas, objek, antarmuka, konstruktor, fungsi, properti, dan penyetelnya. (Anda tidak dapat menyetel pengubah visibilitas getter karena mereka selalu mengambil visibilitas yang sama seperti visibilitas properti.)
Dalam artikel Kotlin Class and Objects, Anda mempelajari tentang pengubah visibilitas public
dan private
secara singkat. Anda akan belajar tentang dua pengubah visibilitas lagi protected
dan internal
(serta public
dan private
) secara detail.
Pengubah Visibilitas Di Dalam Paket
Paket mengatur satu set fungsi, properti dan kelas, objek, dan antarmuka terkait. Bacaan yang disarankan: Paket Kotlin
Pengubah | Deskripsi |
---|---|
publik | deklarasi terlihat di mana-mana |
pribadi | terlihat di dalam file yang berisi deklarasi |
intern | terlihat di dalam modul yang sama (sekumpulan file Kotlin yang dikompilasi bersama) |
terlindung | tidak tersedia untuk paket (digunakan untuk subclass) |
Catatan: Jika pengubah visibilitas tidak ditentukan, ini public
secara default.
Mari kita ambil contoh:
// nama file: hello.kt paket uji menyenangkan function1 () () // publik secara default dan terlihat di mana-mana kesenangan pribadi function2 () () // terlihat di dalam hello.kt kesenangan internal function3 () () // terlihat di dalam modul yang sama var name = "Foo" // terlihat di mana-mana get () = field // terlihat di dalam hello.kt (sama dengan propertinya) set privat (nilai) (// terlihat di dalam hello.kt field = value) kelas privat class1 () // terlihat di dalam hello.kt
Pengubah Visibilitas Di Dalam Kelas dan Antarmuka
Berikut cara kerja pengubah visibilitas untuk anggota (fungsi, properti) yang dideklarasikan di dalam kelas:
Pengubah | Deskripsi |
---|---|
publik | terlihat oleh semua klien yang dapat melihat kelas deklarasi |
pribadi | hanya terlihat di dalam kelas |
terlindung | terlihat di dalam kelas dan subkelasnya |
intern | terlihat oleh klien mana pun di dalam modul yang dapat melihat kelas deklarasi |
Catatan: Jika Anda mengganti protected
anggota di kelas turunan tanpa menentukan visibilitasnya, visibilitasnya juga akan protected
.
Mari kita ambil contoh:
open class Base () (var a = 1 // public secara default private var b = 2 // private to Base class protected open val c = 3 // terlihat oleh Base dan Derived class internal val d = 4 // visible di dalam modul yang sama dilindungi fun e () () // terlihat oleh Base dan kelas Derived) kelas Derived: Base () (// a, c, d, dan e () dari kelas Base terlihat // b tidak terlihat, override val c = 9 // c terlindungi) fun main (args: Array) (val base = Base () // base.a dan base.d terlihat // base.b, base.c dan base .e () tidak terlihat val turunan = Derived () // turunan.c tidak terlihat)
Mengubah Visibilitas Konstruktor
Secara default, visibilitas konstruktor adalah public
. Namun, Anda bisa mengubahnya. Untuk itu, Anda perlu menambahkan constructor
kata kunci secara eksplisit .
Konstruktor secara public
default pada contoh di bawah ini:
class Test (val a: Int) (// code)
Inilah cara Anda dapat mengubah visibilitasnya.
kelas Uji konstruktor pribadi (val a: Int) (// kode)
Di sini konstruktornya private
.
Catatan: Di Kotlin, fungsi, variabel, dan kelas lokal tidak dapat memiliki pengubah visibilitas.