Polimorfisme di Java OOP dengan Contoh:Apa itu, Dinamis
Apa itu Polimorfisme di Java?
Polimorfisme di Jawa terjadi ketika ada satu atau lebih kelas atau objek yang terkait satu sama lain melalui pewarisan. Ini adalah kemampuan suatu objek untuk mengambil banyak bentuk. Warisan memungkinkan pengguna mewarisi atribut dan metode, dan polimorfisme menggunakan metode ini untuk melakukan tugas yang berbeda. Jadi, tujuannya adalah komunikasi, tetapi pendekatannya berbeda.
Misalnya, Anda memiliki smartphone untuk komunikasi. Mode komunikasi yang Anda pilih bisa apa saja. Bisa berupa telepon, SMS, pesan gambar, surat, dll. Jadi, tujuannya sama yaitu komunikasi, tetapi pendekatannya berbeda. Ini disebut Polimorfisme. Sekarang, kita akan belajar Polimorfisme di Java dengan contoh.
Dalam tutorial Java ini, Anda akan belajar-
Apa itu Polimorfisme di Jawa?
Polimorfisme Java dalam OOP dengan Contoh
Penggantian Metode di Java
Perbedaan antara Overloading dan Overriding
Apa itu Polimorfisme Dinamis?
Perbedaan Polimorfisme Statis &Dinamis
Kata Kunci Super di Java
Klik di sini jika video tidak dapat diakses
Polimorfisme Java dalam OOP dengan Contoh
Kami memiliki satu kelas induk, 'Akun' dengan fungsi deposit dan penarikan. Akun memiliki 2 kelas anak
Operasi penyetoran dan penarikan sama untuk rekening Tabungan dan Giro. Jadi metode yang diwarisi dari kelas Akun akan berfungsi.
Contoh Polimorfisme Java
Perubahan Persyaratan Perangkat Lunak
Ada perubahan dalam spesifikasi kebutuhan, sesuatu yang sangat umum di industri perangkat lunak. Anda diharapkan untuk menambahkan fungsionalitas Rekening Perbankan dengan Fasilitas Cerukan.
Sebagai latar belakang, cerukan adalah fasilitas di mana Anda dapat menarik jumlah lebih dari saldo yang tersedia di akun Anda.
Jadi, metode penarikan untuk kebutuhan istimewa diimplementasikan lagi. Tetapi Anda tidak mengubah potongan kode yang diuji di rekening Tabungan dan Giro. Ini adalah keuntungan dari OOPS
Langkah 1) Sehingga ketika metode "ditarik" untuk rekening tabungan disebut metode dari kelas akun induk dijalankan
Langkah 2) Tetapi ketika metode "Tarik" untuk akun istimewa (fasilitas cerukan) disebut metode penarikan yang ditentukan di kelas istimewa dijalankan. Ini adalah Polimorfisme dalam OOP.
Mengganti Metode di Java
Method Overriding adalah mendefinisikan ulang metode super class dalam subclass.
Aturan untuk Penggantian Metode
Tanda tangan metode yaitu nama metode, daftar parameter, dan jenis yang dikembalikan harus sama persis.
Metode yang ditimpa dapat memperluas aksesibilitas tetapi tidak mempersempitnya, yaitu jika privat di kelas dasar, kelas anak dapat menjadikannya publik tetapi tidak sebaliknya.
Contoh
class Doctor{
public void treatPatient(){
// treatPatient method
}
class Surgeon extends Doctor{
public void treatPatient(){
// treatPatient method
}
}
Class run{
public static void main (String args[]){
Doctor doctorObj = new Doctor()
// treatPatient method in class Doctor will be executed
doctorObj.treatPatient();
Surgeon surgeonObj = new Surgeon();
// treatPatient method in class Surgeon will be executed
surgeonObj.treatPatient();
}
}
Perbedaan antara Overloading dan Overriding
Metode Kelebihan Beban
Penggantian Metode
Metode overloading berada di kelas yang sama, di mana lebih dari satu metode memiliki nama yang sama tetapi tanda tangan yang berbeda.
Metode overriding adalah ketika salah satu metode di kelas super didefinisikan ulang di sub-kelas. Dalam hal ini, tanda tangan metode tetap sama.
Mis:
void sum (int a , int b);
void sum (int a , int b, int c);
void sum (float a, double b);
Mis:
class X{
public int sum(){
// some code
}
}
class Y extends X{
public int sum(){
//overridden method
//signature is same
}
}
Apa itu Polimorfisme Dinamis?
Polimorfisme Dinamis dalam OOP adalah mekanisme di mana beberapa metode dapat didefinisikan dengan nama dan tanda tangan yang sama di superclass dan subclass. Panggilan ke metode yang diganti diselesaikan pada waktu proses.
Contoh Polimorfisme Dinamis:
Variabel referensi dari kelas super dapat merujuk ke objek subkelas
Doctor obj = new Surgeon();
Perhatikan pernyataan
obj.treatPatient();
Di sini variabel referensi "obj" adalah kelas induk, tetapi objek yang ditunjuknya adalah kelas anak (seperti yang ditunjukkan pada contoh diagram Polimorfisme di bawah).
obj.treatPatient() akan mengeksekusi metode treatPatient() dari sub-kelas – Ahli Bedah
Jika referensi kelas dasar digunakan untuk memanggil metode, metode yang akan dipanggil ditentukan oleh JVM, tergantung pada objek yang ditunjuk referensi
Misalnya, meskipun obj adalah referensi ke Doctor, ia memanggil metode Surgeon, karena menunjuk ke objek Surgeon
Ini diputuskan selama run-time dan karenanya disebut dinamis atau polimorfisme run-time
Perbedaan antara Polimorfisme Statis &Dinamis
Polimorfisme Statis di Java adalah jenis polimorfisme yang mengumpulkan informasi untuk memanggil metode pada waktu kompilasi, sedangkan Polimorfisme Dinamis adalah jenis polimorfisme yang mengumpulkan informasi untuk memanggil metode saat runtime.
Polimorfisme Statis
Polimorfisme Dinamis
Berhubungan dengan metode overloading.
Berhubungan dengan penggantian metode.
Kesalahan, jika ada, diselesaikan pada waktu kompilasi. Karena kode tidak dieksekusi selama kompilasi, maka namanya static.
Misalnya:
void sum (int a , int b);
void sum (float a, double b);
int sum (int a, int b); //compiler gives error.
Jika variabel referensi memanggil metode yang diganti, metode yang akan dipanggil ditentukan oleh objek, yang ditunjuk oleh variabel referensi Anda. Ini hanya dapat ditentukan pada saat runtime ketika kode di bawah eksekusi, maka namanya dinamis.
Misalnya:
//reference of parent pointing to child object
Doctor obj = new Surgeon();
// method of child called
obj.treatPatient();
Kata Kunci Super di Java
Bagaimana jika metode treatPatient di kelas Surgeon ingin menjalankan fungsionalitas yang didefinisikan di kelas Doctor dan kemudian menjalankan fungsionalitas spesifiknya sendiri?
Dalam hal ini, kata kunci super dapat digunakan untuk mengakses metode kelas induk dari kelas anak.
Metode treatPatient di kelas Surgeon dapat ditulis sebagai:
treatPatient(){
super.treatPatient();
//add code specific to Surgeon
}
Kata kunci super dapat digunakan untuk mengakses setiap anggota data atau metode dari kelas super di sub kelas.
Selanjutnya, kita akan belajar tentang Super keyword, Inheritance dan Polymorphism di Java dengan contoh programnya.
Contoh:-Untuk mempelajari Warisan, Polimorfisme &kata kunci super
Langkah 1) Salin kode berikut ke dalam Editor
public class Test{
public static void main(String args[]){
X x= new X();
Y y = new Y();
y.m2();
//x.m1();
//y.m1();
//x = y;// parent pointing to object of child
//x.m1() ;
//y.a=10;
}
}
class X{
private int a;
int b;
public void m1(){
System.out.println("This is method m1 of class X");
}
}
class Y extends X{
int c; // new instance variable of class Y
public void m1(){
// overriden method
System.out.println("This is method m1 of class Y");
}
public void m2(){
super.m1();
System.out.println("This is method m2 of class Y");
}
}
Langkah 3) Hapus komentar pada baris # 6-9. Simpan, Kompilasi &Jalankan kode. Amati keluarannya.
Langkah 4) Batalkan komentar pada baris # 10 . Simpan &Kompilasi kode.
Langkah 5) Kesalahan =? Ini karena sub-kelas tidak dapat mengakses anggota pribadi dari kelas super.
Ringkasan
Polimorfisme dalam Pemrograman Berorientasi Objek terjadi ketika ada satu atau lebih kelas atau objek yang terkait satu sama lain secara pewarisan. Ini adalah kemampuan suatu objek untuk mengambil banyak bentuk.
Method Overriding adalah mendefinisikan ulang metode super class dalam subclass.
Polimorfisme Dinamis di Java adalah mekanisme di mana beberapa metode dapat didefinisikan dengan nama dan tanda tangan yang sama di superclass dan subclass.
Polimorfisme Statis di Java adalah jenis polimorfisme yang mengumpulkan informasi untuk memanggil metode pada waktu kompilasi, sedangkan Polimorfisme Dinamis adalah jenis polimorfisme yang mengumpulkan informasi untuk memanggil metode saat runtime.
Kata kunci super dapat digunakan untuk mengakses metode kelas induk dari kelas anak.