news

Sabtu, 13 Juni 2020

Apa itu Overloading di Kotlin


Overloading

Pada Kotlin menggunakan dua atau lebih fungsi dengan nama yang sama disebut dengan overloadingOverloading dapat dilakukan selama fungsi itu memiliki parameter yang berbeda. Berikut merupakan contoh overloading fungsi eat() pada sebuah kelas Animal.


  1. class Animal(private var name: String) {

  2.     fun eat() {

  3.         println("$name makan!")

  4.     }

  5.  

  6.     fun eat(typeFood: String) {

  7.         println("$name memakan $typeFood!")

  8.     }

  9.  

  10.     fun eat(typeFood: String, quantity: Double) {

  11.         println("$name memakan $typeFood sebanyak $quantity grams!")

  12.     }

  13.  

  14.     fun sleep() {

  15.         println("$name tidur!")

  16.     }

  17. }


Pada kelas Animal terdapat beberapa fungsi dengan penamaan yang sama, tetapi tidak menyebabkan eror. Sebabnya, fungsi tersebut memiliki parameter yang berbeda sehingga tidak akan terjadi ambiguitas dalam penggunaan fungsi tersebut. Mari kita coba buat sebuah objek dari kelas tersebut dan mengakses fungsinya satu persatu.

  1. fun main() {

  2.     val dicodingCat = Animal("Dicoding Miaw")

  3.  

  4.     dicodingCat.eat()

  5.     dicodingCat.eat("Ikan Tuna")

  6.     dicodingCat.eat("Ikan Tuna", 450.0)

  7. }


Fungsi eat() yang pertama dapat digunakan tanpa mengirimkan parameter apapun. Sedangkan fungsi eat() yang kedua kita mengirimkan sebuah parameter String sebagai nilai typeFood. Dan fungsi eat() yang terakhir membutuhkan 2 (dua) buah parameter, typeFood dan  quantity
Overloading pada fungsi merupakan sebuah fitur yang sangat powerful. Untuk dapat lebih memahami betapa pentingnya overloading, mari kita buat sebuah kelas Calculator yang di dalamnya memiliki fungsi matematika dengan menerapkan overloading pada sebuah fungsi.

  1. class Calculator {

  2.     fun add(value1: Int, value2: Int) = value1 + value2

  3.     fun add(value1: Int, value2: Int, value3: Int) = value1 + value2 + value3

  4.     fun add(value1: Double, value2: Double) = value1 + value2

  5.     fun add(value1: Float, value2: Float) = value1 + value2

  6.  

  7.     fun min(value1: Int, value2: Int) = if (value1 < value2) value1 else value2

  8.     fun min(value1: Double, value2: Double) = if (value1 < value2) value1 else value2

  9. }


Kemudian kita buat sebuah objek Calculator pada main() dan mengakses fungsi yang berada pada kelas tersebut.
  1. fun main() {
  2.     val calc = Calculator()
  3.  
  4.     println(calc.add(2, 4))
  5.     println(calc.add(2.5, 2.2))
  6.     println(calc.add(6f, 7f))
  7.     println(calc.add(1, 2, 3))
  8.  
  9.     println(calc.min(9, 2))
  10.     println(calc.min(17.2, 18.3))
  11. }
  12.  
  13. /*
  14. output
  15.     6
  16.     4.7
  17.     13.0
  18.     6
  19.     2
  20.     17.2
  21. */

Pada contoh yang kita buat, fungsi add(2, 4) memanggil fungsi add yang memiliki parameter Integer, fungsi add(2.5, 2.2) memanggil fungsi add yang memiliki parameter Double, begitu juga dengan yang lainnya.