baca juga : Abstraction, Encapsulation, dan Inheritance
Polimorfisme memungkinkan kita untuk melakukan satu aksi dengan hasil yang berbeda.
Misal kita punya abstract class Hewan, lalu pada class tersebut kita memiliki method bersuara(), suara hewan tentu saja tidak bisa disamakan, untuk itulah setiap class turunannya harus mendeskripsikan seperti apa hewan tersebut bersuara.
Untuk lebih mudahnya lihat dibawah ini.
Source Code Hewan
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public abstract class Hewan { | |
public abstract void bersuara(); | |
public abstract String getNamaHewan(); | |
} |
Source Code Kucing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Kucing extends Hewan { | |
private String namaHewan; | |
// create kucing without input parameter | |
public Kucing() { | |
this.namaHewan = "Kucing"; | |
} | |
// create kucing with parameter | |
public Kucing(String namaHewan) { | |
this.namaHewan = "Kucing bernama " + namaHewan; | |
} | |
@Override | |
public void bersuara() { | |
System.out.println("Meeooww"); | |
} | |
@Override | |
public String getNamaHewan() { | |
return namaHewan; | |
} | |
} |
Source Code Kambing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Kambing extends Hewan { | |
private String namaHewan; | |
// create kambing without input parameter | |
public Kambing() { | |
this.namaHewan = "Kambing"; | |
} | |
// create kambing with parameter | |
public Kambing(String namaHewan) { | |
this.namaHewan = "Kambing bernama " + namaHewan; | |
} | |
@Override | |
public void bersuara() { | |
System.out.println("Mbeekkk"); | |
} | |
@Override | |
public String getNamaHewan() { | |
return namaHewan; | |
} | |
} |
Source Code MainClass
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class MainClass {
public static void main(String[] args) {
Hewan kucing1 = new Kucing();
Hewan kambing1 = new Kambing();
// with name
Hewan kucing2 = new Kucing("amp");
Hewan kambing2 = new Kambing("bro");
kucing1.bersuara();
kucing2.bersuara();
kambing1.bersuara();
kambing2.bersuara();
System.out.println("--------------------------------------------");
System.out.println(kucing1.getNamaHewan());
System.out.println(kucing2.getNamaHewan());
System.out.println(kambing1.getNamaHewan());
System.out.println(kambing2.getNamaHewan());
}
}
Output
Pembahasan
Seperti yang dapat kita lihat, bahwa kita bisa membuat berbagai object Hewan namun dengan spesifik class, seperti Kucing, Kambing, dsb. Lalu jika kita memanggil method bersuara(), output yang dihasilkan oleh kucing dan kambing pun akan berbeda. Itulah yang dimaksud polymorphism, banyak bentuk serta dinamis, jadi jika kita ingin membuat list hewan, kita bisa membuat ArrayList<Hewan> hewanList = new ArrayList(); lalu pada list tersebut kita bisa memasukkan Kambing, Kucing, dan object lain yang merupakan inheritance dari class Hewan.Serta pada class Kucing dan Kambing terdapat dua constructor, atau dikenal dengan istilah Constructor Overloading, dengan kata lain, jika kita membuat object dengan memasukkan satu parameter string, maka code yang ada didalam constructor dengan satu parameter string tersebut yang akan dieksekusi. Tidak hanya constructor, method juga bisa di-overloading loh.
Sekian dari penulis, jika ada yang kurang jelas bisa ditanyakan lewat komentar dibawah :)
No comments
Post a Comment