Polymorphism Adalah : Pengertian, Jenis & Peran Dalam Pemrograman Java

Polymorphism Adalah ? Simak Penjelasannya

Polymorphism Adalah : Pengertian, Jenis & Peran Dalam Pemrograman Java – Polymorphism atau Polimorfisme, adalah salah satu istilah pembuatan program yang harus diketahui oleh kalian sebagai seorang pengembang program. Untuk itu, apabila masih ada di antara kalian yang belum tahu jelas mengenai istilah ini, simak baik – baik penjelasan mengenai Polymorphism di dalam artikel ini.

Sebelum memasuki penjelasan, untuk kalian ketahui bahwa polimorfisme ini juga adalah bagian dari teknik OOP atau Object Oriented Programming. Sehingga maklumi saja apabila kalian akan menemukan berbagai istilah yang sama dalam teknik yang akan kami jelaskan ini.

Polymorphism Adalah ? Simak Penjelasannya

Pengertian Polymorphism

Polymorphism Adalah ? Simak Penjelasannya

Dalam sebuah pembuatan program, Polymorphism adalah suatu konsep yang mana sebuah tampilan muka tunggal akan digunakan untuk berbagai entitas yang berbeda. Secara umum, suatu simbol tunggal yang digunakan, memiliki fungsi untuk mewakili berbagai jenis objek.

Polymorphism juga bisa dikatakan sebagai atribut, fungsi, tampilan muka, atau salah satu item lainnya yang digunakan untuk beberapa jenis entitas yang berbeda – beda di dalam bahasa pembuatan program.

Dalam suatu bahasa pembuatan program yang menunjukkan adanya polimorfisme, ketika objek kelas yang memiliki kepentingan dan diwariskan dari bagian induk yang sama, bisa saja memiliki berbagai nama dan fungsi yang sama juga, tetapi perilaku yang dimilikinya akan berbeda.

Arti lain dari polimorfisme adalah teknik pembuatan program yang akan mengarahkan kalian sebagai pengembang, untuk bisa membuat program secara umum. Contohnya ketika kalian memiliki tiga kelas yang berbeda seperti ‘anggur’, ‘mangga’, dan ‘apel’. Yang mana ketiga kelas ini adalah turunan dari kelas ‘Buah’.

Bagi para pengembang atau seorang pembuat program seperti kalian, diharapkan dapat lebih memperluas serta memahami dari berbagai konsep polimorfisme yang ada.

Baca Juga: Kotlin Adalah : Pengertian , Download & Fungsinya

Polimorfisme di Java

Polimorfisme di Java

Polimorfisme di Java atau Polymorphism in Java, sebenarnya memiliki Dua tipe yang berbeda, yaitu:

  • Polimorfisme Dinamis

Tipe polimorfisme satu ini sering dilakukan saat program sedang berjalan. Untuk implementasinya sendiri dianggap lebih fleksibel dibandingkan dengan tipe yang satunya, tapi memiliki kinerja yang lebih lambat.

  • Polimorfisme Statis

Kalau tipe yang ini, dilakukan pada saat penyusunan atau compile. Kinerjanya lebih cepat tapi membutuhkan bantuan tambahan.

Dari kedua jenis polimorfisme pada Java atau Java Polymorphism ini, masing – masing memang memiliki kelebihan dan kekurangannya tersendiri.

Tentu saja kedua tipe ini juga memiliki perbedaan yang terletak pada cara pembuatan Polymorphism itu sendiri. Yang mana cara pembuatan polimorfisme dinamis menggunakan metode Overriding, dan polimorfisme statis menggunakan metode Overloading.

Untuk kalian yang juga masih asing dengan dua jenis metode yang baru saja kami sebutkan, tidak perlu khawatir. Sebab, kami juga akan menjelaskannya di dalam artikel ini.

Contoh Logika Polymorphism dalam Kehidupan Sehari-hari (dengan analogi dalam Java)

Skenario: Alat Tulis (Penulisan Polimorfik)

Bayangkan kamu memiliki berbagai alat tulis yang berbeda, seperti pensil, pena, dan spidol. Meskipun semuanya digunakan untuk menulis, setiap alat memiliki cara yang berbeda dalam penggunaannya. Ini menggambarkan Polymorphism, di mana satu metode (misalnya, tulis()) dapat menghasilkan perilaku berbeda berdasarkan jenis objek yang menggunakannya (pensil, pena, spidol).

Dalam Java, kita dapat mengimplementasikan ini sebagai berikut:

  1. Class Induk: AlatTulis
    • Semua alat tulis dapat menulis, tetapi cara menulisnya berbeda.
  2. Class Turunan: Pensil, Pena, Spidol
    • Setiap alat tulis memiliki implementasi yang berbeda untuk metode tulis().

Logika Polymorphism dalam Java:

// Class induk yang mendefinisikan metode tulis()
class AlatTulis {
    public void tulis() {
        System.out.println("Menulis dengan alat tulis umum");
    }
}

// Class turunan yang meng-overriding metode tulis()
class Pensil extends AlatTulis {
    @Override
    public void tulis() {
        System.out.println("Menulis dengan pensil");
    }
}

class Pena extends AlatTulis {
    @Override
    public void tulis() {
        System.out.println("Menulis dengan pena");
    }
}

class Spidol extends AlatTulis {
    @Override
    public void tulis() {
        System.out.println("Menulis dengan spidol");
    }
}

// Polymorphism dalam kehidupan sehari-hari
public class PolymorphismContoh {
    public static void main(String[] args) {
        // Deklarasi menggunakan class induk, tetapi objeknya dari class turunan
        AlatTulis alat1 = new Pensil();
        AlatTulis alat2 = new Pena();
        AlatTulis alat3 = new Spidol();
        
        // Memanggil metode tulis() yang berperilaku berbeda tergantung objeknya
        alat1.tulis();  // Output: Menulis dengan pensil
        alat2.tulis();  // Output: Menulis dengan pena
        alat3.tulis();  // Output: Menulis dengan spidol
    }
}

 

Penjelasan Contoh:

  • AlatTulis adalah class induk yang memiliki metode tulis() yang dapat diturunkan.
  • Class turunan Pensil, Pena, dan Spidol meng-override metode tulis() untuk menyesuaikan dengan cara menulis masing-masing alat.
  • Dalam metode main(), meskipun kita menggunakan class induk AlatTulis untuk mendeklarasikan objek, saat metode tulis() dipanggil, Java akan menjalankan versi dari metode tersebut berdasarkan objek turunan sebenarnya (pensil, pena, atau spidol).

Analoginya dalam Kehidupan Sehari-hari:

  • Kamu memiliki alat tulis yang berbeda (pensil, pena, spidol).
  • Meskipun perintah yang diberikan sama (yaitu menulis), setiap alat tulis akan merespons dengan cara berbeda berdasarkan alat yang digunakan.
  • Dalam Java, ini diterjemahkan ke dalam polymorphism, di mana satu metode (misal tulis()) dapat memiliki implementasi berbeda berdasarkan objek yang memanggilnya.

Ini adalah logika dasar polymorphism yang sangat berguna dalam pemrograman Java, karena memungkinkan fleksibilitas dalam mendefinisikan perilaku yang berbeda pada class-class turunan dari class induk yang sama.

Baca Juga: Java Adalah : Definisi Sejarah, Kelebihan dan Kekurangannya

Perbedaan Metode Overriding dan Overloading

Sekarang, kita akan memasuki penjelasan mengenai kedua metode yang digunakan untuk pembuatan polimorfisme.

  1. Metode Overriding dan Contoh 

Beberapa aturan yang terdapat di dalam metode ini antara lain:

  • Mode akses dari metode Overriding harus sama atau lebih luas dibandingkan dengan metode Override.
  • Kelas lanjutan hanya boleh mengesampingkan metode kelas super sebanyak satu kali saja, serta dalam satu kelas tidak boleh ada lebih dari satu metode.
  • Membicarakan aturan mengenai hak akses, setiap kelas lanjutan juga tidak boleh memiliki hak akses metode Overriding yang lebih ketat, ketika dibandingkan dengan metode hak akses pada kelas yang lebih tinggi.
  1. Metode Overloading

Aturan dalam metode Overloading adalah:

  • Nama metode yang ada, harus sama dengan metode yang lainnya.
  • Berbagai parameter harus berbeda dan tidak boleh sama
  • Mengenai return, diperbolehkan untuk sama ataupun berbeda.

Itu adalah perbedaan aturan dari kedua metode yang sering digunakan untuk pembuatan polimorfisme dalam Java. Contoh pembuatannya sendiri juga sekarang ini sudah bisa dengan mudah kalian temukan di dalam dunia maya. Dengan kata lain, kalian juga akan lebih mudah untuk mempelajarinya ketika kalian memerlukannya.

Polymorphism dalam Pemrograman Berorientasi Objek (PBO/PPL)

Polymorphism adalah konsep kunci dalam Pemrograman Berorientasi Objek (PBO) yang memungkinkan satu metode atau antarmuka berfungsi dengan berbagai bentuk objek. Ini membantu menjaga fleksibilitas, memungkinkan kode bekerja dengan banyak tipe objek, dan memperkuat prinsip OOP seperti inheritance dan abstraction.

Apa Itu Polymorphism dalam Pemrograman Berorientasi Objek (PPL)?

Polymorphism memungkinkan objek dari kelas yang berbeda diperlakukan seragam melalui satu antarmuka. Ada dua jenis polymorphism:

  1. Polymorphism Statis: Menggunakan method overloading, di mana metode yang sama digunakan dengan parameter berbeda.
  2. Polymorphism Dinamis: Menggunakan method overriding, di mana subclass mengimplementasikan ulang metode dari superclass.

Manfaat Polymorphism dalam Pengembangan Aplikasi PBO

Polymorphism memudahkan pengembangan dengan:

  1. Fleksibilitas: Kode dapat menangani banyak tipe objek tanpa perubahan signifikan.
  2. Reusabilitas: Mengurangi pengulangan kode dan memungkinkan penggunaan ulang metode.
  3. Perluasan Mudah: Menambahkan fitur baru tanpa mengubah struktur kode yang ada.
  4. Pemeliharaan Kode: Memudahkan perbaikan atau penambahan fitur tanpa mengganggu kode lama.

Contoh Polymorphism bla bla bla

Polymorphism dapat membantu membangun aplikasi yang lebih modular, scalable, dan mudah dipelihara.

Kapan Menggunakan Polymorphism dalam Pemrograman Java

Polymorphism adalah konsep fundamental dalam pemrograman berorientasi objek (OOP) yang memungkinkan satu tindakan atau metode memiliki banyak bentuk tergantung pada konteksnya. Dalam Java, polymorphism memberikan fleksibilitas yang tinggi dalam desain aplikasi dan memperkuat prinsip inheritance dan abstraction. Namun, untuk memanfaatkan kelebihan polymorphism secara maksimal, pengembang perlu memahami kapan dan bagaimana menggunakannya secara tepat dalam proyek mereka. Ada dua bentuk utama polymorphism di Java: method overloading dan method overriding. Mari kita bahas kapan masing-masing digunakan untuk menyelesaikan masalah yang berbeda.

Kapan Harus Menggunakan Method Overloading

Method overloading terjadi ketika sebuah kelas memiliki beberapa metode dengan nama yang sama tetapi parameter yang berbeda (baik dalam jumlah atau tipe). Overloading berguna dalam situasi di mana Anda ingin metode dapat menangani berbagai jenis input atau skenario dengan cara yang efisien dan intuitif. Berikut adalah beberapa situasi di mana method overloading sangat cocok:

  1. Operasi yang Serupa dengan Input Berbeda: Jika Anda memiliki beberapa operasi yang memiliki tujuan yang sama tetapi menerima input yang berbeda, overloading adalah solusi elegan. Sebagai contoh, dalam sebuah library matematis, Anda bisa memiliki metode sum(int a, int b) dan sum(double a, double b) untuk menjumlahkan angka dalam tipe data yang berbeda tanpa harus membuat nama metode yang berbeda.
  2. Meningkatkan Readability: Daripada membuat metode dengan nama berbeda yang mengacaukan kode, menggunakan method overloading memungkinkan kode tetap bersih dan konsisten. Ini memudahkan pengembang lain untuk memahami maksud dari metode yang ada tanpa harus mempelajari banyak variasi nama metode.
  3. Mempermudah Penambahan Fitur: Jika aplikasi berkembang dan Anda membutuhkan fungsi tambahan yang dapat menerima tipe data atau parameter baru, overloading memungkinkan Anda untuk memperbarui metode tanpa mengubah kode lama, sehingga mendukung backward compatibility.
  4. Contoh Praktis: Bayangkan Anda memiliki aplikasi pemrosesan teks. Anda bisa memiliki beberapa metode processText(String input) dan processText(String input, boolean removeWhitespace) yang menjalankan fungsi yang sama dengan pilihan tambahan sesuai kebutuhan. Ini memberi fleksibilitas bagi pengguna metode tanpa menulis kode baru dari awal.

Kapan Harus Menggunakan Method Overriding

Method overriding memungkinkan subclass dalam Java untuk memberikan implementasi spesifik dari metode yang sudah didefinisikan oleh superclass-nya. Ini merupakan bentuk polymorphism dinamis, di mana metode yang dipanggil ditentukan saat runtime, bukan pada saat kompilasi. Overriding sangat kuat dalam pengembangan aplikasi yang membutuhkan generalisasi dan spesialisasi. Berikut adalah skenario di mana method overriding menjadi solusi yang tepat:

  1. Menerapkan Polymorphism Dinamis: Ketika Anda ingin objek dari kelas turunan (subclass) memiliki perilaku yang berbeda dari kelas induk (superclass), overriding adalah solusinya. Misalnya, dalam aplikasi berbasis hewan, superclass Animal mungkin memiliki metode makeSound(), tetapi subclass seperti Dog dan Cat bisa mengimplementasikan suara yang berbeda melalui method overriding.
  2. Spesialisasi dari Generalisasi: Method overriding sering digunakan untuk mengkhususkan perilaku metode yang diwariskan dari superclass. Ketika subclass perlu memperluas atau mengubah logika tertentu agar lebih sesuai dengan kebutuhan spesifiknya, overriding memberi cara untuk memodifikasi perilaku tersebut tanpa mengubah kode superclass. Misalnya, jika Anda memiliki superclass Payment yang memiliki metode process(), subclass CreditCardPayment atau PaypalPayment dapat menimpa metode tersebut untuk mengimplementasikan logika khusus sesuai metode pembayaran masing-masing.
  3. Mendukung Pola Desain: Overriding juga penting dalam implementasi berbagai design patterns seperti Template Method Pattern atau Strategy Pattern, di mana superclass mendefinisikan kerangka dasar perilaku dan subclass bertanggung jawab untuk menyediakan implementasi spesifik. Ini memberikan struktur kode yang modular dan memungkinkan perubahan spesifik tanpa merusak logika umum.
  4. Contoh Praktis: Dalam aplikasi e-commerce, misalnya, superclass Shipping mungkin memiliki metode calculateCost(). Namun, subclass seperti ExpressShipping atau StandardShipping dapat meng-override metode ini untuk memperhitungkan biaya yang berbeda sesuai dengan jenis pengiriman yang dipilih.
  5. Fleksibilitas untuk Menangani Berbagai Tipe Objek: Salah satu keuntungan utama polymorphism dinamis yang diberikan oleh method overriding adalah kemampuan untuk menggunakan objek dari berbagai subclass secara seragam. Misalnya, dengan overriding, Anda bisa menyimpan objek Dog, Cat, dan Bird dalam satu array Animal[], dan memanggil metode makeSound() pada setiap objek tanpa mengetahui tipe spesifik objek tersebut pada saat runtime.

Tipe-tipe pada Polimorfisme

Selain tipe Polymorphism pada sebuah pembuatan program Java, masih ada beberapa tipe lain yang tidak kalah penting untuk kalian ketahui. Seperti sebelumnya, berbagai tipe yang akan kami jelaskan ini juga memiliki masing – masing kegunaan serta kelebihan dan kekurangan tersendiri.

Tipe – tipe dari polimorfisme adalah:

  1. Polytypism

Tipe yang satu ini merupakan suatu konsep yang lebih umum, tapi masih tetap ada keterkaitannya dengan polimorfisme itu sendiri dikarenakan konsep yang mirip. Tujuan dari tipe ini lebih untuk menyediakan definisi umum dari sebuah fungsi yang menggunakan induksi terhadap struktur dari suatu tipe.

  1. Polimorfisme Ad Hoc

Tipe ini, adalah salah satu tipe sistem yang dikenalkan oleh Christopher Strachet. Tipe satu ini, merupakan tipe yang mana suatu fungsi, akan dapat diaplikasikan dan diimplementasikan terhadap berbagai parameter yang berbeda – beda.

Namun, tetap berdasarkan parameter atau argumen apa yang telah dimasukkan pada fungsi tersebut.

  1. Tipe Subtyping

Sering juga disebut sebagai polimorfisme Subtype atau polimorfisme Inclusion. Tipe ini sangat umum digunakan ketika kalian menggunakan Interface serta Inherintance.

Polimorfisme Subtyping, memungkinkan fungsi yang berasal dari kelas dasar atau interface, untuk diimplementasikan secara berbeda ataupun sama dengan kelas dasar atau Interface tersebut, terhadap children class.

  1. Polimorfisme Parametric

Kalau tipe yang satu ini, bisa membuat suatu data ataupun fungsi menjadi dituliskan secara umum atau general. Hal ini akan membuat proses nilai dapat dilakukan secara seragam tanpa perlu lagi memperhatikan berbagai tipe yang sedang digunakan.

  1. Polimorfisme Row

Salah satu tipe polimorfisme yang konsepnya mirip dengan tipe Subtyping, tapi lebih memiliki urusan terhadap tipe structural. Tipe ini juga membuat kalian menjadi mungkin untuk melakukan suatu operasi kepada suatu bagian dari sebuah data.

Bagaimana? Apakah kalian sekarang sudah lebih mengerti dengan Polymorphism atau malah semakin pusing? Memang benar, kalau untuk mempelajari berbagai hal mengenai pengembangan program lebih baik dilakukan dengan para ahli sembari melakukan praktik.

Untuk itu, kalian sudah bisa mengambil berbagai pelatihan bidang teknologi dari Course-Net loh. Selain menciptakan berbagai alumni yang berkompeten, para tutor yang tersedia juga sudah terbukti bisa memberikan penjelasan dengan lengkap dan mudah untuk dimengerti.

Kesimpulan

Sebelum menutup penjelasan, kita akan kembali mengingat berbagai hal penting mengenai polimorfisme yang telah diulas di atas.

Polimorfisme sendiri adalah suatu bagian dari teknik pembuatan program yang berorientasi terhadap objek atau yang sering juga disebut sebagai OOP. Yang mana, dalam sebuah kelas memiliki suatu metode yang sama tetapi memiliki bodi yang berbeda.

Polimorfisme pada Java, memiliki dua tipe yang dibedakan dari metode pembuatannya. Yaitu polimorfisme dinamis dengan metode Overriding, dan polimorfisme statis dengan metode Overloading.

Belajar IT di Course-Net, Sampai bisa!

Masih Ga percaya ? Di Course-Net kamu Belajar Langsung Oleh Coach Praktisi Aktif Berpengalaman

Share: