Pengertian Polimorfisme Dalam Pemrograman Java

Hallo, teman-teman apa kabar? Semoga baik-baik saja ya! 

Pemrograman berorientasi objek atau OOP mempunyai beberapa pilar penting. Hal ini harus kamu pahami. Di antaranya class, object, method, dan inheritance. Dapat kamu lihat dan pelajari pada blog sebelumnya di Apa itu OOP pada Java? Beserta Contohnya.

Lalu apa itu Polimorfisme pada Java? Ingin lebih tahu? Mari kita simak langsung penjelasan berikut ini.

Pengertian Polimorfisme

polimorfisme

Polimorfisme 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

Baik teman-teman, method overloading terjadi pada sebuah class yang memiliki nama method yang sama tapi memiliki parameter dan tipe data yang berbeda.

Ingat! Intinya dalam sebuah class memiliki method yang sama, namun parameter dan tipe data yang berbeda. 

Tujuan dari method overloading yaitu memudahkan penggunaan atau pemanggilan method dengan fungsionalitas yang mirip.

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

Telusuri Kode
Coba perhatikan kode program di atas!

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.

Karena masih berkaitan dengan Java, yuk gabung dengan kelas Memulai Pemrograman Dengan Java di Dicoding. Kenapa kamu harus ikut kelas tersebut? Biar makin terarah belajarnya. Sebab kurikulum yang dibuat secara komprehensif serta dibimbing para mentor yang berkompeten di bidangnya serta GRATIS! Kapan lagi coba, langsung aja kuy!

“Kalau niat kamu benar mau bisa (programming), kamu harus cari jalan. Bukan alasan. Informasi ada banyak. Tinggal belajar!”  

(Ahmad Hanafi)

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

  

Belajar mengembangkan aplikasi atau game dengan kurikulum yang telah divalidasi langsung oleh industri dengan Dicoding Academy.

Belajar di Dicoding Sekarang →
Share this:

Intern Junior Content Writer di Dicoding