Polimorfisme
Polimorfisme adalah konsep penting dalam pemrograman berorientasi objek yang memungkinkan objek-objek yang berbeda untuk diakses melalui antarmuka yang sama. Di Kotlin, kita dapat menerapkan polimorfisme melalui pewarisan dan penggunaan antarmuka.
Apa Itu Polimorfisme?
Polimorfisme berasal dari bahasa Yunani yang berarti "banyak bentuk". Dalam konteks OOP, polimorfisme memungkinkan kita untuk menggunakan satu antarmuka untuk melakukan berbagai tindakan. Dalam Kotlin, kita dapat menggunakan dua jenis polimorfisme:
- Polimorfisme Waktu Kompilasi (Compile-time Polymorphism): Dicapai melalui method overloading.
- Polimorfisme Waktu Eksekusi (Runtime Polymorphism): Dicapai melalui method overriding dan penggunaan antarmuka.
1. Polimorfisme Waktu Kompilasi
Method Overloading
Method overloading terjadi ketika beberapa metode dengan nama yang sama tetapi dengan parameter yang berbeda ada dalam satu kelas. Berikut adalah contoh:
class Calculator {
fun add(a: Int, b: Int): Int {
return a + b
}
fun add(a: Double, b: Double): Double {
return a + b
}
}
fun main() {
val calculator = Calculator()
println(calculator.add(5, 10)) // Output: 15
println(calculator.add(5.5, 2.3)) // Output: 7.8
}
2. Polimorfisme Waktu Eksekusi
Method Overriding
Method overriding terjadi ketika subclass menyediakan implementasi untuk metode yang sudah didefinisikan dalam superclass.
open class Animal {
open fun sound() {
println("Some sound")
}
}
class Dog : Animal() {
override fun sound() {
println("Bark")
}
}
class Cat : Animal() {
override fun sound() {
println("Meow")
}
}
fun main() {
val myAnimal: Animal = Dog()
myAnimal.sound() // Output: Bark
val myAnimal2: Animal = Cat()
myAnimal2.sound() // Output: Meow
}
Penggunaan Antarmuka
Kotlin juga mendukung polimorfisme melalui antarmuka. Berikut adalah contoh bagaimana antarmuka dapat digunakan untuk mencapai polimorfisme:
interface Vehicle {
fun start()
}
class Car : Vehicle {
override fun start() {
println("Car started")
}
}
class Bike : Vehicle {
override fun start() {
println("Bike started")
}
}
fun startVehicle(vehicle: Vehicle) {
vehicle.start()
}
fun main() {
val car: Vehicle = Car()
val bike: Vehicle = Bike()
startVehicle(car) // Output: Car started
startVehicle(bike) // Output: Bike started
}
Kesimpulan
Polimorfisme adalah konsep penting dalam OOP yang memungkinkan kita untuk menggunakan objek dengan cara yang fleksibel dan umum. Dalam Kotlin, kita dapat menggunakan method overloading dan overriding di kelas dan antarmuka untuk mencapai polimorfisme. Dengan pemahaman ini, Anda dapat merancang aplikasi yang lebih abstrak dan mudah untuk dikelola.