Polymorphism

Polymorphism adalah entitas seperti variabel, function, atau objek lain yang ketika ditampilkan memiliki bentuk yang berbeda-beda.

Software Engineering

Mau Belajar

Software Engineering

GRATIS?

Di RevoU, tidak hanya teori, penerapan, serta career coaching. Kamu juga mendapatkan akses ke Community Hub dengan 6000+ member. Di sini, kamu akan selalu terupdate informasi seputar job openings, industry news, dan upskilling events!

IKUT KURSUS GRATIS

Mau Belajar

Software Engineering

GRATIS?

Apa itu Polymorphism?

Apa itu polymorphism
Apa itu polymorphism

Polymorphism atau polimorfisme merupakan konsep penting dari bahasa pemrograman berbasis objek atau object-oriented programming (OOP) seperti Python dan Java. 

Polymorphism tersusun atas dua kata; yaitu poly yang berarti banyak, dan morph yang artinya bentuk. Jika diartikan, polymorphism adalah entitas seperti variabel, function, atau objek lain yang ketika ditampilkan bisa dalam bentuk yang berbeda-beda.

Misalnya dalam contoh nyata, Andi sudah menikah dan memiliki anak. Saat ini, ia bekerja sebagai software engineer di salah satu perusahaan swasta. 

Maka jika menerapkan konsep polymorphism, Andi (objek) memiliki tiga karakteristik (wujud) yang berbeda, yaitu sebagai ayah, suami, dan karyawan. Ketiga karakteristik tersebut ditampilkan pada situasi yang berbeda pula. 

Meskipun polymorphism adalah konsep umum dari OOP, polimorfisme pada Java dan Python berbeda. Lantas apa yang dimaksud polymorphism pada Java? 

Artikel berikut akan membahas lebih lanjut mengenai polymorphism pada Java dan perbedaannya dengan Python.

Perbedaan Metode Overloading dan Overriding

Terdapat dua metode polymorphism yang bisa digunakan pada Java, yaitu overloading dan overriding

#1 Overloading

Metode overloading adalah proses di mana polymorphism dapat membuat beberapa metode atau fungsi dengan nama yang sama, namun memiliki parameter yang berbeda. Metode ini berfungsi agar sebuah program lebih mudah dibaca.

Metode overloading setidaknya harus memenuhi satu satu dari tiga kriteria berikut:

  • Setiap metode memiliki jumlah parameter yang berbeda. Misalnya metode A yang pertama memiliki 2 parameter, sedangkan metode A yang kedua memiliki 3 parameter.
  • Jenis parameter yang dimiliki oleh setiap metode berbeda. Misalnya, salah satu metode A menerima tipe data string (jumlah karakter dalam satu kalimat), sedangkan metode lainnya menerima long (tipe data yang memiliki nilai atau angka).
  • Urutan parameter pada setiap metode berbeda. Misalnya urutan parameter pada salah satu metode A adalah long - string, sedangkan urutan pada metode A lainnya adalah kebalikannya.

Misalnya pada gambar berikut, ada dua metode A namun memiliki parameter yang berbeda.

Contoh metode overloading
Contoh metode overloading

Dalam kebanyakan kasus, meskipun kedua metode A memiliki parameter yang berbeda, namun fungsi keduanya hampir mirip.

Pada metode overloading di Java, return type bisa saja sama atau berbeda antara metode. Namun perintah ini hanya bisa dilakukan dengan cara mengganti parameter pada metode tertentu. 

Return type adalah perintah agar program mengembalikan nilai yang tersimpan dalam data. Tipe data yang dikembalikan oleh metode harus sama dengan tipe data yang telah ditentukan sebelumnya. 

Misalnya, tipe data yang ingin dikembalikan pada metode A adalah bilangan bulat. Maka, return type harus bilangan bulat, dan tak bisa mengembalikan data selain itu.

#2 Overriding

Metode overriding berfungsi untuk memberikan implementasi spesifik dari metode yang sudah disediakan oleh parent class

Metode overriding menggunakan pendekatan pewarisan (inheritance). Pada metode ini, subclass (anak kelas) memiliki metode yang sama dengan parent class (kelas utama), termasuk nama, parameter, serta return type. Meski begitu, kedua kelas memiliki fungsi berbeda.

Dengan metode overriding, programmer dapat memodifikasi atau mengganti total metode pada subclass jika metode tersebut tidak sesuai dengan subclass. Proses ini berlangsung saat kode yang siap dieksekusi dijalankan (runtime), sehingga membuat performa metode overriding lebih baik daripada metode overloading.

Perbedaan metode overloading dan overriding
Perbedaan metode overloading dan overriding

Tipe-tipe Polymorphism

Ada dua tipe polymorphism di Java, yaitu compile-time dan runtime. Kedua tipe polimorfisme ini berkaitan dengan metode yang telah dijelaskan sebelumnya dan tak bisa dipisahkan. 

Berikut perbedaan dari tipe compile-time dan runtime:

  • Compile-time: Tipe compile-time atau static terjadi ketika metode dijalankan pada waktu kompilasi (compile-time), yaitu saat kode sumber diubah menjadi kode yang dapat dieksekusi. Tipe ini terjadi saat menjalankan metode overloading.
  • Runtime: Tipe runtime atau dynamic merujuk pada metode dijalankan tepat saat kode yang dapat dieksekusi mulai dijalankan. Runtime berlangsung saat metode overriding.

Contoh Polymorphism

Berikut ini akan dijelaskan contoh polymorphism dengan metode overriding tipe runtime

Misalnya kelas hewan anjing terbagi menjadi beberapa jenis, seperti Husky dan Pudel. Anjing dikenal berkomunikasi dengan cara yang sama, yaitu menggonggong. 

Meski begitu, setiap anjing memiliki suara yang berbeda-beda. Misalnya, suara anjing Pudel lebih nyaring, sedangkan anjing Husky lebih berat. Hal ini membuat seakan-akan anjing mengeluarkan huruf yang berbeda saat berkomunikasi.  

Dari penjelasan di atas didapatkan:

  • Parentclass: Anjing
  • Subclass: Pudel, Husky

Dengan metode overriding, parentclass memperluas subclass dan memodifikasi metode talk()-nya. Kemudian metode talk() akan dipanggil dengan variabel referensi dari parent class, yaitu kelas anjing. Artinya, metode ini akan menunjukkan bagaimana suara dari setiap anjing di subclass

Penjelasan di atas digambarkan dengan polymorphism metode overriding berikut yang dibuat oleh Free Code Camp.

Contoh polymorphism Free Code Camp
Contoh polymorphism Free Code Camp

FAQ (Frequently Asked Question)

Apa yang dimaksud polymorphism pada Python?

Polymorphism pada Python tidak dibedakan antara compile-time dan runtime seperti pada Java. 

Python menggunakan konsep duck typing, yaitu mengidentifikasi objek dari perilakunya, bukan tipe datanya. Artinya, selama function yang dijalankan dapat memanggil metode pada objek yang ingin dipanggil, function ini mengasumsikan bahwa objek sudah benar tanpa perlu memverifikasi tipe datanya.

Perumpamaannya, jika objek berjalan seperti bebek, dan bersuara seperti bebek, maka objek tersebut adalah bebek.

Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!

Rasakan pengalaman belajar di RevoU Full-Stack Program:

Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion.

Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)

Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!

Rasakan pengalaman belajar di RevoU Full-Stack Program:
Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion.

Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)

Masih ragu? Coba dulu 3 hari, GRATIS
di Full-Stack Trial Class!

Rasakan pengalaman belajar di RevoU Full-Stack Program:

Kelas 100% LIVE, Mini portofolio lewat hands-on assignment, Bimbingan Team Lead & small group discussion.

Kalau cocok, kamu bisa lanjut daftar Full Program dengan kesempatan Fast-Track (skip semua tes seleksi masuk, langsung ke tahap akhir!)

Kata kunci lainnya

Mulai karirmu dalam

Software Engineering

Di RevoU, tidak hanya teori, penerapan, serta career coaching. Kamu juga mendapatkan akses ke Community Hub dengan 6000+ member. Di sini, kamu akan selalu terupdate informasi seputar job openings, industry news, dan upskilling events!
ikut kursus gratis
Menu