news

Sabtu, 13 Juni 2020

Belajar Memahami Interfaces di Kotlin


Interfaces

Interfaces merupakan suatu konsep sifat umum yang nantinya digunakan oleh suatu kelas agar dapat memiliki sifat tersebut.

 Interface sangat mirip dengan abstract class, namun tanpa sebuah properti deklarasi dan fungsi yang dideklarasikan tanpa isi. Tujuan dari interface ini hanya untuk diimplementasikan oleh sebuah kelas. 
Kelas yang mengimplementasikan sebuah interface diharuskan melakukan override seluruh properti dan fungsi sekaligus mendefinisikan isi fungsi yang terdapat pada interfaces-nya.
Cara pembuatan sebuah interface mirip dengan membuat kelas. Pada umumnya penamaan sebuah interface dituliskan dengan awalan huruf I kapital. 
Hal ini tidak diharuskan secara sintaks tapi ini merupakan penerapan terbaik dalam penamaan sebuah interface. Tujuannya agar dapat mudah membedakannya dengan kelas. Berikut merupakan contoh pembuatan sebuah interface:

  1. interface IFly {

  2.     fun fly()

  3. }



Cara mengimplementasikan sebuah interface pada kelas, sama seperti kita melakukan extends pada sebuah super atau parent class. Untuk lebih jelasnya, mari kita buat sebuah kelas burung dengan mengimplementasikan interface IFly:

  1. class Bird : IFly {

  2.  

  3. }



deklarasiKita akan mendapati eror ketika selesai menuliskan kode tersebut. Pesan eror tersebut mengatakan “class Bird is not abstract and does not implement abstract member”. 
Maksud dari eror tersebut adalah kita harus  mengimplementasi sebuah abstract member yang pada kasus ini adalah sebuah fungsi abstract yang terdapat pada IFly. Maka untuk menghilangkan eror tersebut, kita harus melakukan override fungsi yang terdapat pada IFly.

  1. class Bird : IFly {

  2.     override fun fly() {

  3.         println("I flying without wings")

  4.     }

  5. }



Untuk menambahkan sebuah properti pada interface, kita cukup menuliskannya seperti pada kelas namun tanpa melakukan inisialisasi nilai:

  1. interface IFly {

  2.     fun fly()

  3.     val numberOfWings: Int

  4. }



Sama seperti fungsi, kita juga diharuskan melakukan override properti. Overriding properti bisa dilakukan pada sebuah konstruktor kelas seperti berikut:

  1. class Bird(override val numberOfWings: Int) : IFly {

  2.  

  3.     override fun fly() {

  4.         if(numberOfWings > 0) println("Flying with $numberOfWings wings")

  5.         else println("I'm Flying without wings")

  6.     }

  7. }