Buscar

Polimorfisme pada pewarisan di Java

Masih seputar java, kali ini saya akan sharing mengenai apa yang baru saja saya pelajari (efek pelatihan java, baca di postingan sebelumnya), jika kemarin saya bahas mengenai overloadmethod, sekarang saya akan sharing mengenai Polimorfisme pewarisan (Inheritance) di dalam java.
Untuk menerapkan konsep pewarisan, Java menyediakan keyword extends yang dapat dipakai pada waktu mendeklarasikan suatu class. Contoh berikut merupakan implementasi dari dari hierarki class Binatang di atas.
Polimorfisme bisa diartikan satu bentuk banyak aksi. Dalam pewarisan polimorfisme dapat kita lakukan. Kita data memerintah sebuah objek untuk melakukan tindakan yang secara prinsip sama tapi secara proses berbeda.
sekarang saya akan memberikan contoh kasus sederhana mengenai Polimorfisme. Diceritakan bahwa senjata merupakan induk dari pistol, senapan, meriam, dsb. Dengan kata lain bahwa senjata merupakan pewaris sifat yang bisa diturunkan ke anak-anaknya.
Lalu kita buat objek tentara yang bisa menggunakan berbagai macam senjata dengan efek yang berbeda-beda. Nah inilah yang disebut Polimorfisme (banyak aksi). Dalam kasus ini, kita harus memasukan peluru terlebih dahulu dengan methode reload sebelum melakukan tembak.
Mari kita buat program sederhananya.
Pertama buat project dengan nama senjata
Lalu buat class dengan nama Senjata.java

package senjata;

/**
 *
 * @author  Anggun Patriana
 */
public class Senjata {
    protected int jumlahPeluru = 0;
    public void reload(int jml){
        this.jumlahPeluru +=jml;
    }
    
    public void tembak(){
    
    }
}
Lalu buat class anaknya yang sifatnya seperti induknya yaitu
1. class Pistol.java
package senjata;

/**
 *
 * @author Anggun Patriana
 */
public class Pistol extends Senjata {
   
    @Override
     public void tembak(){
        if(this.jumlahPeluru>0){
            --this.jumlahPeluru;
            System.out.println("Dor..........");
        }else{
            System.out.println("Please Reload");
        }
    }
}
2. class Senapan.java
package senjata;

/**
 *
 * @author  Anggun Patriana
 */
public class Senapan extends Senjata {
   
    @Override
     public void tembak(){
        if(this.jumlahPeluru>0){
            --this.jumlahPeluru;
            System.out.println("Duaaaaaaaaaaaaaaaar...  ");
        }else{
            System.out.println("Please Reload");
        }
    }
}
3. class Meriam.java
package senjata;

/**
 *
 * @author Anggun Patriana
 */
public class Meriam extends Senjata {
   
    @Override
     public void tembak(){
        if(this.jumlahPeluru>0){
            --this.jumlahPeluru;
            System.out.println("Booooooom..........");
        }else{
            System.out.println("Please Reload");
        }
    }
}
Lalu kita buat class Tentara.java
package senjata;

/**
 *
 * @author  Anggun Patriana
 */
public class Tentara {
   private String nama;
   private Senjata senjata;
   
   public void menembak(){   
        this.senjata.tembak();
   }

    public void mereload(int jml){   
        this.senjata.reload(jml);
   }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }
   
    public void setSenjata(Senjata sj) {
        this.senjata = sj;
    }
   
}
Terakhir kita buat class DemoSenjata.java yang akan mengeksekusi program yang kita buat.
package senjata;

/**
 *
 * @author Anggun Patriana
 */
public class DemoSenjata {
    public static void main (String[] args){
        Senjata sj = new Pistol();
        Tentara tentara = new Tentara();
        tentara.setNama("Rambo");
        tentara.setSenjata(sj);
        
        tentara.menembak();
        tentara.mereload(2);
        tentara.menembak();
        tentara.menembak();
        
        sj = new Senapan();
        tentara.setSenjata(sj);
        
        tentara.mereload(3);
        tentara.menembak();
        tentara.menembak();
        tentara.menembak();
        tentara.menembak();
        
        sj = new Meriam();
        tentara.setSenjata(sj);
        tentara.mereload(1);
        tentara.menembak();
        tentara.menembak();
        
       
    }
    
}
Outputnya :

Bagaimana? mudahkan? Selamat mencoba :)

0 comments:

Posting Komentar