Last Updated on September 11, 2021 by
Tahukah kamu, dalam bahasa Java dikenal sebuah fungsi yang bernama polimorfisme? Polimorfisme java adalah kemampuan suatu objek untuk mengambil banyak bentuk.
Pada seri tutorial Java kali ini Codekey akan membahas tentang polimorfisme Java serta implementasinya. Jika kamu tertarik untuk tahu, mari simak artikel ini!
Table of Contents
Polimorfisme Java
Polimorfisme dalam bahasa Java adalah konsep di mana kita dapat melakukan satu tindakan dengan cara yang berbeda. Polimorfisme berasal dari 2 kata Yunani: poli dan morf. Kata “poli” berarti banyak dan “morf” berarti bentuk. Jadi polimorfisme berarti banyak bentuk.
Objek Java apa pun yang dapat lulus lebih dari satu tes IS-A dianggap polimorfik. Di Java, semua objek Java adalah polimorfik karena objek apa pun akan lulus uji IS-A untuk tipenya sendiri dan untuk kelas Object.
Penting untuk kamu ketahui bahwa satu-satunya cara yang mungkin untuk mengakses suatu objek adalah melalui variabel referensi. Variabel referensi hanya dapat terdiri dari satu jenis. Setelah dideklarasikan, jenis variabel referensi tidak dapat diubah.
Variabel referensi dapat dipindahkan ke objek lain asalkan tidak dinyatakan final. Jenis variabel referensi akan menentukan metode yang dapat dipanggil pada objek.
Variabel referensi dapat merujuk ke objek apa pun dari tipe yang dideklarasikan atau subtipe dari tipe yang dideklarasikan. Variabel referensi dapat dideklarasikan sebagai kelas atau tipe antarmuka.
Ada dua jenis polimorfisme Java: polimorfisme waktu kompilasi dan polimorfisme runtime. Kita dapat melakukan polimorfisme di java dengan metode overloading dan metode overriding. Jika kamu membebani metode statis di Java, hal itu adalah contoh polimorfisme waktu kompilasi.
Contoh Implementasi Polimorfisme Java
Lihatlah contoh di bawah ini dengan saksama!
Monyet mo = new Monyet(); Hewan he = mo; Omnivora om = mo; Object ob = mo;
Sekarang, kelas Deer dianggap polimorfik karena memiliki banyak pewarisan. Berikut ini yang benar untuk contoh di atas:
- Monyet adalah Hewan
- Monyet adalah Omnivora
- Monyet adalah Monyet
- Monyet adalah Object
Ketika kami menerapkan fakta variabel referensi ke referensi objek Deer, deklarasi berikut adalah deklarasi yang legal. Contoh:
Monyet mo = new Monyet(); Hewan he = mo; Omnivora om = mo; Object ob = mo;
Semua variabel referensi mo,he, om, ob, ditujukan untuk objek Monyet yang sama di tumpukan yang ada.
Metode Virtual
Pada segmen ini, Codekey akan menunjukkan bagaimana behavior atau perilaku metode yang diganti di Java. Hal ini memungkinkan Kamu untuk memanfaatkan polimorfisme saat mendesain kelas yang kamu gunakan.
Kita sudah membahas metode override di tutorial sebelumnya, di mana kelas anak dapat menimpa metode di kelas induknya. Metode yang ditimpa pada dasarnya tersembunyi di kelas induk, dan tidak dipanggil kecuali kelas anak menggunakan kata kunci super di dalam metode utama.
/* File name : Siswa.java */ public class Siswa { private String nama; private String hobi; private int umur; public Siswa(String nama, String hobi, int umur) { System.out.println("Selamat Belajar JAVA!"); this.nama = nama; this.hobi = hobi; this.umur = umur; } public void hasil() { System.out.println("Nama" +this.name + "Hobi" + this.hobi + "Umur" + this.umur +); } public String toString() { return nama + " " + hobi + " " + umur; } public String getNama() { return nama; } public String getHobi() { return hobi; } public void setHobi(String newHobi) { hobi = newHobi; } public int getUmur() { return umur; } }
Semua variabel referensi mo,he, om, ob, ditujukan untuk objek Monyet yang sama di tumpukan yang ada.
Metode Virtual
Pada segmen ini, Codekey akan menunjukkan bagaimana behavior atau perilaku metode yang diganti di Java. Hal ini memungkinkan Kamu untuk memanfaatkan polimorfisme saat mendesain kelas yang kamu gunakan.
Kita sudah membahas metode override di tutorial sebelumnya, di mana kelas anak dapat menimpa metode di kelas induknya. Metode yang ditimpa pada dasarnya tersembunyi di kelas induk, dan tidak dipanggil kecuali kelas anak menggunakan kata kunci super di dalam metode utama.
/* File name : Siswa.java */ public class Siswa { private String nama; private String hobi; private int umur; public Siswa(String nama, String hobi, int umur) { System.out.println("Selamat Belajar JAVA!"); this.nama = nama; this.hobi = hobi; this.umur = umur; } public void hasil() { System.out.println("Nama" +this.name + "Hobi" + this.hobi + "Umur" + this.umur +); } public String toString() { return nama + " " + hobi + " " + umur; } public String getNama() { return nama; } public String getHobi() { return hobi; } public void setHobi(String newHobi) { hobi = newHobi; } public int getUmur() { return umur; } }
Di sini kamu akan melihat contoh implementasi kode ketika kamu ingin memperluas kelas siswa sebagai berikut:
/* File name : Nilai.java */ public class Nilai extends Siswa { private double nilai; public Nilai(String nama, String hobi, int umur, double nilai) { super(nama, hobi, umur); setNilai(nilai); } public void hasil() { System.out.println("-----------"); System.out.println("Siswa bernama" + getNama() + " dengan nilai Bahasa Indonesia " + nilai); } public double getNilai() { return nilai; } public void setNilai (double newNilai) { if(newNilai >= 0.0) { nilai = newNilai; } } public double pesan() { System.out.println("Selamat" + getNama()); return nilai/10; } }
Sekarang kamu bisa pelajari contoh program di bawah ini dengan saksama dan cobalah untuk menemukan outputnya:
/* File name : UjiCoba.java */ public class UjiCoba { public static void main(String [] args) { Nilai n = new Nilai("Andi", "Berenang", 13, 57); Siswa s = new Nilai("Budi", "Membaca", 12, 77); System.out.println("Dari referensi Nilai "); n.mailCheck(); System.out.println("\n Dari referensi Siswa "); s.mailCheck(); } }
Maka hasil dari program ini adalah:
Selamat Belajar JAVA! Selamat Belajar JAVA! Dari referensi Nilai ----------- Siswa bernama Andi dengan nilai Bahasa Indonesia 57 Dari referensi Siswa ----------- Siswa bernama Budi dengan nilai Bahasa Indonesia 77
Di sini, kami membuat instance dua objek nilai. Satu menggunakan referensi nilai n, dan lainnya menggunakan referensi siswa s.
Saat menjalankan n.hasil(), kompilator melihat hasil() di kelas nilai pada waktu kompilasi, dan JVM memanggil hasil() di kelas nilai pada waktu proses.
hasil() pada s sangat berbeda karena s adalah referensi siswa. Ketika kompilator melihat s.hasil(), kompiler melihat metode hasil() di kelas siswa.
Di kode ini, pada waktu kompilasi, compiler menggunakan hasil() di Siswa untuk memvalidasi pernyataan ini. Namun, pada saat dijalankan, JVM memanggil hasil() di kelas nilai.
Perilaku ini disebut sebagai pemanggilan metode virtual, dan metode ini disebut sebagai metode virtual. Metode yang diganti dipanggil pada waktu proses, tidak peduli tipe data apa referensi yang digunakan dalam kode sumber pada waktu kompilasi.
Contoh Runtime Java Polimorfisme
Dalam contoh ini, Codekey akan memberi contoh runtime polymorphism dalam java. Kami membuat dua kelas Persegi dan Nilai. Kelas Nilai memberi nilai pada kelas persegi dan mengganti metode hitung()-nya.
Kami memanggil metode run dengan variabel referensi kelas Induk. Karena mengacu pada objek subkelas dan metode subkelas menimpa metode kelas Induk, metode subkelas dipanggil saat runtime.
Karena pemanggilan metode ditentukan oleh JVM bukan kompiler, ini dikenal sebagai polimorfisme runtime.
1. class Persegi{ 2. void hitung(){System.out.println("Rumus :");} 3. } 4. class Nilai extends Persegi{ 5. void hitung(){System.out.println("S x S");} 6. 7. public static void main(String args[]){ 8. Persegi p = new Nilai(); 9. p.hitung(); 10. } 11. }
Output yang dihasilkan adalah sebagai berikut:
Rumus : S x S
Itulah penjelasan tentang polimorfisme Java yang membantu kamu untuk mengubah-ubah bentuk objekmu di Java. Kalau kamu tertarik untuk belajar tentang Java, kami menyarankan kamu untuk mengunjungi seri tutorial Java yang ada di Codekey.
Situs codekey menyediakan berbagai tutorial, penjelasan, materi, tips, dan trik untuk kamu belajar bahasa pemrograman. Jangan lupa untuk dapatkan update terbaru tentang tutorial bahasa pemrograman di Codekey.
Jasa Pembuatan Aplikasi, Website dan Internet Marketing | PT APPKEY
PT APPKEY adalah perusahaan IT yang khusus membuat aplikasi Android, iOS dan mengembangkan sistem website. Kami juga memiliki pengetahuan dan wawasan dalam menjalankan pemasaran online sehingga diharapkan dapat membantu menyelesaikan permasalahan Anda.