Memahami Polimorfisme pada Java + Contoh Code



Dalam pemrograman berorientasi object kita mengenal suatu istilah yaitu “ Polimorfisme ”, yaitu suatu teknik dalam programming yang lebih mengarahkan kita untuk memprogram secara general dari pada secara spesifik. Sebagai contoh seumpama kita memiliki 3 class berbeda yaitu: “Motor”, “Mobil” dan “Pesawat”. Dimana ketiga class tersebut adalah turunan dari class “Kendaraan”. Dalam kelas kedaraan terdapat suatu method yaitu “Move()”, akan tetapi apakah method “Move()” akan memberikan hasil yang sama pada tiga class tersebut. Dimana jika method “Move()” dipanggil pada class “Motor” akan menghasilkan perpindahan 30Km, jika pada class “Mobil” akan menghasilkan perpindahan 70Km dan jika dipanggil pada class “Pesawat” akan menghasilkan perpindahan 300Km. Hal inilah yang kita sebut sebagai Polimorfisme , yaitu penggunaan method yang sama, yang akan menghasilkan suatu hasil yang berbeda tergantung class yang menggunakan method tersebut.
Berikut ini adalah contoh program java yang menggunakan polimorfisme :


  1. //Class kendaraan.java  
  2.   
  3. public class Kendaraan {  
  4.   
  5. private int posisi;  
  6.   
  7. public Kendaraan(int posisi) {  
  8.  this.posisi = posisi;  
  9. }  
  10.   
  11. public void Move() {  
  12.  return;  
  13. }  
  14.   
  15. public int getPosisi() {  
  16.  return posisi;  
  17. }  
  18.   
  19. public void setPosisi(int posisi) {  
  20.  this.posisi = posisi;  
  21. }  
  22. }  

  1. //Class motor.java  
  2.   
  3. public class Motor extends Kendaraan {  
  4.   
  5. public Motor(int posisi) {  
  6.   super(posisi);  
  7. }  
  8.   
  9. @Override  
  10. public void Move() {  
  11.   setPosisi(getPosisi() + 30);  
  12. }  
  13. }  

  1. //Class mobil.java  
  2.   
  3. public class Mobil extends Kendaraan {  
  4.   
  5. public Mobil(int posisi) {  
  6.    super(posisi);  
  7. }  
  8.   
  9. @Override  
  10. public void Move() {  
  11.    setPosisi(getPosisi() + 70);  
  12. }  
  13. }  

  1. //Class pesawat.java  
  2.   
  3. public class Pesawat extends Kendaraan {  
  4.   
  5. public Pesawat(int posisi) {  
  6.     super(posisi);  
  7. }  
  8.   
  9. @Override  
  10. public void Move() {  
  11.     setPosisi(getPosisi() + 300);  
  12. }  
  13. }  

  1. //Class Main.java  
  2.   
  3. public class Main {  
  4.   
  5.     public static void main(String[] args) {  
  6.   
  7.         Kendaraan kendaraan[] = new Kendaraan[3];  
  8.         int posisi = 10;  
  9.         kendaraan[0] = new Motor(posisi);  
  10.         kendaraan[1] = new Mobil(posisi);  
  11.         kendaraan[2] = new Pesawat(posisi);  
  12.         System.out.println("Intansiasi 3 Object Turunan Class Kendaraan");  
  13.         System.out.println(" -kendaraan[0] merupakan instantsiasi dari class "  
  14.                 + "Motor dengan posisi awal " + posisi);  
  15.         System.out.println(" -kendaraan[1] merupakan instantsiasi dari class "  
  16.                 + "Mobil dengan posisi awal " + posisi);  
  17.         System.out.println(" -kendaraan[2] merupakan instantsiasi dari class "  
  18.                 + "Pesawat dengan posisi awal " + posisi);  
  19.   
  20.         for (int i = 0; i < kendaraan.length(); i++) {  
  21.             System.out.println("Object [" + i + "] memanggil method move");  
  22.             System.out.println("Posisi sebelum method move() dipanggil : " + kendaraan[i].getPosisi());  
  23.             kendaraan[i].Move();  
  24.             System.out.println("Posisi setelah method move() dipanggil : " + kendaraan[i].getPosisi());  
  25.             System.out.println();  
  26.         }  
  27.   
  28.     }  
  29. }  
Selain itu, dalam java juga dikenalkan sebuah keyword untuk mengetahui bentuk instance suatu object, yaitu instanceof untuk penggunaannya mari kita modifikasi saja main.java dari program diatas sehingga menjadi seperti berikut ini

  1. public class Main {  
  2.   
  3.   public static void main(String[] args) {  
  4.   
  5.       Kendaraan kendaraan[] = new Kendaraan[3];  
  6.       int posisi = 10;  
  7.       kendaraan[0] = new Motor(posisi);  
  8.       kendaraan[1] = new Mobil(posisi);  
  9.       kendaraan[2] = new Pesawat(posisi);  
  10.   
  11.       if (kendaraan[0instanceof Motor) {  
  12.           System.out.println("Kendaraan[0] merupakan instanceof Motor");  
  13.       }  
  14.   
  15.       if (kendaraan[1instanceof Motor) {  
  16.           System.out.println("Kendaraan[1] merupakan instanceof Motor");  
  17.       }  
  18.   }