Langsung ke konten utama

3.6 Memahami konsep polimorphisme 4.6 Menyajikan konsep polimorphisme dengan overloading dan overiding

 


olimorfisme terbagi menjadi dua suku kata yaitu, Poly yang berarti banyak dan Morfisme yang berarti bentuk. Dalam ilmu sains, Polimorfisme (polymorphism) adalah sebuah prinsip dalam biologi di mana organisme atau spesies memiliki banyak bentuk serta tahapan (stages). Prinsip tersebut diterapkan juga pada bahasa Java.

Polimorfisme dalam OOP merupakan sebuah konsep OOP di mana class memiliki banyak “bentuk” method yang berbeda, meskipun namanya sama. Maksud dari “bentuk” adalah isinya yang berbeda, namun tipe data dan parameternya berbeda.

Polimorfisme juga dapat diartikan sebagai teknik programming yang mengarahkan kamu untuk memprogram secara general daripada secara spesifik. Contohnya kita memiliki tiga class yang berbeda yaitu: “Kelinci”, “Kucing”, dan “Sapi”. Di mana ketiga class tersebut merupakan turunan dari class “Hewan”.

Sejalan dengan contoh yang diberikan, kamu diharapkan dapat mengerti dan memahami konsep polimorfisme itu sendiri.

Polimorfisme pada Java memiliki 2 macam yaitu diantaranya:

  1. Static Polymorphism (Polimorfisme statis).
  2. Dynamic Polymorphism (Polimorfisme dinamis).

Perbedaan keduanya terletak pada cara membuat polimorfisme. Polimorfisme statis menggunakan method overloading, sedangkan polimorfisme dinamis menggunakan method overriding

Jika sebelumnya kamu belum tahu perbedaan antara method overloading dan method overriding, maka kita akan bahasa juga perbedaan dari keduanya.

Perbedaan Method Overloading dan Method Overriding

method

Aturan Method Overloading

  • Nama method harus sama dengan method lainnya.
  • Parameter haruslah berbeda.
  • Return boleh sama, juga boleh berbeda.

Inilah contohnya.

Misal kamu membuat sebuah class dengan nama Cetak.java. Pada class ini mempunyai method maxNumber(). Perhatikan kode program dibawah ini.

Kode Lab:


Maka Outputnya:
5.5
10

Pada class Cetak.java memiliki 2 method yang sama yaitu maxNumber(). Tapi parameter dan tipenya berbeda, yaitu:

  • static double maxNumber(double a, double b)
  • static int maxNumber(int a, int b)

Yang pertama memiliki parameter dan tipe data double, sedangkan satunya lagi memiliki parameter dan tipe data int. Hal ini jelas berbeda.

Ok, Inilah yang disebut polimorfisme statisSudah mulai paham kan?

Lalu Polimorfisme yang dinamis seperti apa? Polimorfisme dinamis identik dengan menggunakan pewarisan (inheritance), implementasi interface bahkan abstrak class.

Untuk inheritance sendiri sudah dibahasa sebelumnya. Atau kamu bisa kunjungi linknya di awal tadi. Adapun pengertian dari interface dan abstrak.

Interface adalah class kosong yang berisi nama-nama method dan nantinya harus diimplementasikan pada class lain. Dalam pengimplementasiannya, tiap-tiap class akan mengimplementasikan secara berbeda dengan nama method yang sama.

Abstrak adalah class yang masih dalam bentuk bayangan. Ia tidak bisa dibuat langsung menjadi objek karena bentuknya masih bayangan atau abstrak. Tentunya abstrak ini induk dan jika ini konkrit, kamu mesti mengimplementasikan method-method tersebut. Ini bisa kamu lakukan dengan melakukan teknik pewarisan (inheritance).

Baik, sebagai contoh kita pilih salah satu interface atau abstrak. Saya coba dulu pilih menggunakan abstrak class. Perhatikan gambar tabel class diagram di bawah ini.

table abstract

Kita akan coba membuat program sesuai dengan gambar tabel di atas.

Buatlah class Hewan.java. Berarti ini merupakan kelas induk dari semua kelas. Kemudian buat class Kucing.java dan Burung.java sebagai anaknya. Kamu bisa membuatnya dalam satu class maupun class yang berbeda.


Maka Outputnya:
Suara Kucing: Meow…meow..meow.
Suara Burung: Cit…cit..cit.

Telusuri Kode
Class Hewan.java memiliki method utama yaitu munculSuara(). Kita menambahkan beberapa subclass anak kelas dari Hewan.java yakni Kucing.java dan Burung.java. Mereka memiliki method yang sama meskipun menampilkan statements argumen yang berbeda.

Kucing.java


Burung.java

Aturan Method Overriding

  • Mode akses overriding method harus sama atau lebih luas daripada override method.
  • Subclass hanya dapat dan boleh meng-override method superclass satu kali saja. Tidak boleh ada lebih dari satu method yang sama pada kelas.
  • Soal aturan hak akses, setiap subclass tidak boleh mempunyai hak akses method overriding yang ketat dibandingkan dengan hak akses method pada superclass ataupun parent class.

Gimana sudah mulai terbayang? Jika masih belum maksimal dalam memahami, tak perlu khawatir ya. InsyaAllah kamu akan paham jika sudah membacanya sampai tuntas.

Penutup

Baik, demikianlah yang dapat saya sampaikan. Intinya, polimorfisme merupakan bagian dari teknik OOP, di mana sebuah class dapat memiliki method yang sama, namun bodynya berbeda-berbeda. Atau bisa kita artikan juga sebagai slogan berbeda-beda tapi namanya tetap sama.

Jika ada pengalaman menarik sewaktu ngoding atau kamu mungkin menemukan kendala/bug, silakan tinggalkan komentar di bawah ini ya. Tim kami akan senantiasa membantumu kok. Selamat belajar!

Pengertian Polimorfisme Dalam Pemrograman Java– karya Rendi Juliarto, Intern Junior Content Writer di Dicoding

  


Komentar

Postingan populer dari blog ini

3.12 Memahami data collection sebagai media penyimpanan data. 4.12 Menyajikan data colection sebagai penyimpan data

3.4. Memahami konsep enkapsulasi dalam melindungi data dan informasi 4.4 Menyajikan perlindungan data dan informasi melalui mekanisme enkapsulasi