Farih.co.id
Home Programming Polimorfisme dalam OOP: Mengubah Bentuk Objek

Polimorfisme dalam OOP: Mengubah Bentuk Objek

diagram inheritance

Dalam pemrograman berorientasi objek (OOP), polimorfisme adalah konsep krusial yang memungkinkan objek dari berbagai kelas yang terkait untuk merespons metode yang sama dengan cara yang berbeda. Dengan kata lain, polimorfisme memungkinkan kita untuk memperlakukan objek yang berbeda seolah-olah itu adalah satu jenis, bahkan jika objek tersebut memiliki implementasi yang berbeda.

Apa itu Polimorfisme?

Secara harfiah, polimorfisme berarti “memiliki banyak bentuk”. Dalam OOP, polimorfisme mengacu pada kemampuan sebuah objek untuk memiliki banyak bentuk atau perilaku yang berbeda. Ini dicapai melalui pewarisan dan metode overriding.

Pewarisan

Pewarisan adalah konsep dasar OOP yang memungkinkan kita membuat kelas baru yang mewarisi properti dan metode dari kelas induk. Kelas baru yang diwarisi dikenal sebagai kelas turunan, sedangkan kelas induk dikenal sebagai kelas dasar.

Ketika sebuah kelas mewarisi dari kelas dasar, ia memperoleh semua properti dan metodenya. Ini berarti bahwa kelas turunan dapat menggunakan metode kelas dasar serta mendefinisikan metode baru.

Metode Overriding

Metode overriding memungkinkan kita untuk mendefinisikan kembali metode di kelas turunan yang diwarisi dari kelas induk. Ini berarti bahwa kelas turunan dapat mengubah perilaku metode yang diwarisi.

Ketika suatu metode ditimpa di kelas turunan, metode versi kelas induk tidak lagi dipanggil. Sebagai gantinya, metode versi kelas turunan dipanggil.

Cara Kerja Polimorfisme

Polimorfisme bekerja melalui proses yang disebut pengikatan dinamis. Saat sebuah objek dipanggil ke sebuah metode, tipe objek tersebut diperiksa saat runtime untuk menentukan metode versi mana yang akan dipanggil.

Dengan kata lain, metode yang dipanggil bergantung pada tipe objek yang sebenarnya, bukan tipe objek yang direferensikan oleh variabel.

Contoh Polimorfisme

Mari kita ilustrasikan polimorfisme dengan contoh sederhana. Misalkan kita memiliki kelas dasar Hewan dengan metode bernama “suara()”.

class Hewan {
  public void suara() {
    System.out.println("Suara Hewan");
  }
}

Sekarang, mari kita buat dua kelas turunan Anjing dan Kucing yang mewarisi dari kelas Hewan dan mengganti metode “suara()”.

class Anjing extends Hewan {
  @Override
  public void suara() {
    System.out.println("Gonggongan Anjing");
  }
}

class Kucing extends Hewan {
  @Override
  public void suara() {
    System.out.println("Mengeong Kucing");
  }
}

Sekarang, kita dapat membuat objek dari kelas Anjing dan Kucing dan memanggil metode “suara()”. Meskipun kedua objek adalah instance dari kelas Hewan, mereka akan menampilkan output yang berbeda karena metode “suara()” mereka ditimpa di kelas turunan.

 Hewan hewan1 = new Anjing();
 hewan1.suara(); // Output: Gonggongan Anjing

Hewan hewan2 = new Kucing();
 hewan2.suara(); // Output: Mengeong Kucing

Manfaat Polimorfisme

Polimorfisme menawarkan beberapa manfaat dalam pemrograman OOP:

  • Fleksibilitas: Polimorfisme memungkinkan kita menulis kode yang lebih fleksibel yang dapat menangani berbagai jenis objek.
  • Keterbacaan: Polimorfisme membuat kode lebih mudah dibaca dan dipahami karena kita dapat menggunakan metode yang sama untuk objek yang berbeda.
  • Pemeliharaan: Polimorfisme memudahkan pemeliharaan kode karena perubahan pada kelas dasar akan secara otomatis tercermin dalam kelas turunan.
  • Dapat Diperluas: Polimorfisme memungkinkan kita untuk dengan mudah memperluas fungsionalitas program kita dengan membuat kelas turunan baru.

Kesimpulan

Polimorfisme adalah konsep penting dalam OOP yang memungkinkan objek dari berbagai kelas untuk merespons metode yang sama dengan cara yang berbeda. Ini dicapai melalui pewarisan dan metode overriding. Polimorfisme menawarkan sejumlah manfaat, termasuk fleksibilitas, keterbacaan, pemeliharaan, dan kemampuan diperluas. Dengan memahami dan memanfaatkan polimorfisme, kita dapat menulis kode yang lebih kuat dan efisien.

Comment
Share:

Leave a Reply

Your email address will not be published. Required fields are marked *

Ad