Selasa, 14 Juni 2022

Belajar Tentang Properties di Kotlin


Properties

Sebuah kelas dalam Kotlin tentu memiliki properti. Masing - masing kelas memiliki properti yang berbeda. Contoh sebelumnya pada kelas Animal, properti yang dimiliki berupa nameweightage dan isMammal.

Sama seperti variabel yang sudah kita pelajari pada modul Data Types, properti dapat dideklarasikan sebagai nilai mutable dengan menggunakan var atau sebagai nilai read-only dengan menggunakan val

Property Accessor

Secara standar ketika properti pada kelas dibuat mutable, maka Kotlin akan menghasilkan fungsi getter dan setter pada properti tersebut. Jika properti pada sebuah kelas dibuat read-only, Kotlin hanya akan menghasilkan fungsi getter pada properti tersebut. Namun sebenarnya Anda bisa membuat fungsi getter dan setter secara manual jika pada kasus tertentu Anda perlu untuk override fungsi tersebut.
Perhatikan kode berikut:

  1. class Animal{

  2.     var name: String = "Dicoding Miaw"

  3. }

  4.  

  5. fun main(){

  6.     val dicodingCat = Animal()

  7.     println("Nama: ${dicodingCat.name}" )

  8.     dicodingCat.name = "Goose"

  9.     println("Nama: ${dicodingCat.name}")

  10. }

  11.  

  12. /*

  13. output:

  14. Nama: Dicoding Miaw

  15. Nama: Goose

  16. */



Pada kode  ${dicodingCat.name} sebenarnya terjadi proses pemanggilan fungsi getter pada properti name
Namun kita tidak melakukan override pada fungsi getter  sehingga fungsi tersebut hanya mengembalikan nilai name saja. Begitu juga pada kode dicodingCat.name = "Goose" pada kode tersebut terjadi pemanggilan fungsi setter pada properti name
Tetapi jika kita melakukan override pada fungsi getter dan juga setter , maka kita dapat menambahkan kode lain pada fungsi getter sesuai dengan kebutuhan. Mari kita coba modifikasi kode sebelumnya menjadi:
  1. class Animal{
  2.     var name: String = "Dicoding Miaw"
  3.         get(){
  4.             println("Fungsi Getter terpanggil")
  5.             return field
  6.         }
  7.         set(value){
  8.             println("Fungsi Setter terpanggil")
  9.             field = value
  10.         }
  11. }
  12.  
  13. fun main(){
  14.     val dicodingCat = Animal()
  15.     println("Nama: ${dicodingCat.name}" )
  16.     dicodingCat.name = "Goose"
  17.     println("Nama: ${dicodingCat.name}")
  18. }
  19.  
  20. /*
  21. output:
  22. Fungsi Getter terpanggil
  23. Nama: Dicoding Miaw
  24. Fungsi Setter terpanggil
  25. Fungsi Getter terpanggil
  26. Nama: Goose
  27. */

Urutan pendefinisian fungsi get() dan set() tidaklah penting, kita dapat mendefinisikan fungsi get() tanpa mendefinisikan fungsi set() dan juga sebaliknya. 
Yang terpenting pendeklarasiannya dilakukan setelah mendeklarasikan properti tersebut. 
Pada fungsi get(), kita perlu mengembalikan nilai sesuai tipe data dari propertinya atau kita dapat mengembalikan nilai dari properti itu sendiri dengan menggunakan keyword field
Sedangkan untuk fungsi set() kita memerlukan sebuah parameter. Ini merupakan sebuah nilai baru yang nantinya akan dijadikan nilai properti. Pada kode di atas parameter tersebut ditetapkan dengan nama value

Posting Komentar