Polymorphism dalam konsep Object Oriented Programming adalah kemampuan suatu objek untuk membuat banyak bentuk melalui satu cara yang sama. Banyak bentuk maksudnya bahwa objek yang pada dasarnya sama tapi bertindak/bertingkah laku yang berbeda-beda.
Kemampuan polimorfisme diantaranya :
- Penerapan Polimorfisme pada Overload dan Override (baik melalui inheritance maupun interface)
- Penggunaan Superclass sebagai referensi dari object Subclass
Overload : method/konstruktur yang memiliki nama yang sama namun dengan parameter yang berbeda. Override : proses pendeklarasian ulang nama method pada kelas utama kepada kelas turunannnya. Dalam pembuatan overriding method, nama dan tipe data method harus sama dengan kelas induknya guna pembuatan polymorphism.
Berikut adalah contoh polymorphism di java. Pada super kelas sistem akademik terdapat method IsiData() yang akan diimplementasikan berbagai bentuk di sub-subclass nya.
Kelas siakad
/** * * @author Wim Sonevel */ public class siakad { int nim; String nama; String matkul; int sks; String dosen; double uts; double uas; public siakad(){} public siakad(int nim, String nama){ this.nim = nim; this.nama = nama; } public siakad(String matkul, int sks){ this.matkul = matkul; this.sks = sks; } public siakad(String dosen){ this.dosen = dosen; } public siakad(double uts, double uas){ this.uts = uts; this.uas = uas; } public void isiData(){ System.out.println("Sistem Akademik"); System.out.println("----------------------------"); } }
Kelas dosen
/** * * @author Wim Sonevel */ public class dosen extends siakad{ public dosen(String dosen){ super(dosen); } @Override public void isiData(){ System.out.println("Dosen : "+dosen); } }Kelas mahasiswa
/** * * @author Wim Sonevel */ public class mahasiswa extends siakad{ public mahasiswa(int nim, String nama){ super(nim, nama); } @Override public void isiData(){ System.out.println("Nim : "+nim); System.out.println("Nama : "+nama); } }
Kelas matkul
/** * * @author Wim Sonevel */ public class matkul extends siakad{ public matkul(String matkul, int sks){ super(matkul, sks); } @Override public void isiData(){ System.out.println("Mata Kuliah : "+matkul); System.out.println("SKS : "+sks); } }
Kelas nilai
/** * * @author Wim Sonevel */ public class nilai extends siakad{ double nilaiAkhir = 0.0; char angka; public nilai(double uts, double uas){ super(uts, uas); } public void hitungNilai(){ nilaiAkhir = (uts+uas)/2; if(nilaiAkhir>80) angka = 'A'; else if(nilaiAkhir>70) angka = 'B'; else if(nilaiAkhir>60) angka = 'C'; else angka = 'D'; } @Override public void isiData(){ System.out.println("Nilai UTS : "+uts); System.out.println("Nilai UAS : "+uas); System.out.println("Nilai Akhir : "+nilaiAkhir); System.out.println("Angka Mutu : "+angka); } }
kelas main
/** * * @author Wim Sonevel */ public class tesSiakad { public static void main(String[]args){ siakad si = new siakad(); mahasiswa mhs = new mahasiswa(11650053, "Wim Sonevel"); matkul mat = new matkul("Pemrograman Berorientasi Objek",3); dosen dos = new dosen("Shoffin"); nilai ni = new nilai(85, 70); ni.hitungNilai(); si.isiData(); si = mhs; si.isiData(); si = mat; si.isiData(); si = dos; si.isiData(); si = ni; si.isiData(); } }
Lalu jalankan kelas tesSiakad maka outputnya akan seperti berikut :
Sistem Akademik
----------------------------
Nim : 11650053
Nama : Wim Sonevel
Mata Kuliah : Pemrograman Berorientasi Objek
SKS : 3
Dosen : Shoffin
Nilai UTS : 85.0
Nilai UAS : 70.0
Nilai Akhir : 77.5
Angka Mutu : B
Sekian dan semoga bermanfaat
Happy Coding :)
1 Komentar
ok min, makasih
BalasAlat pemisah lcd
Penulisan markup di komentar