Inheritance adalah pewarisan sifat dari superclass ke subclass, yang mewarisi attribute dan method yang masih sejenis beserta attribute dan method tambahan yang merupakan sifat khusus subclass. Misalnya class sapi adalah hewan bertulang belakang / vertebrata yang merupakan mamalia pemakan tumbuhan / herbivora.
Polymorphism adalah suatu object dapat memiliki berbagai bentuk, sebagai object dari class sendiri atau object dari superclassnya
- Overloading : Penggunaan satu nama untuk beberapa method yang berbeda (beda parameter)
- Overriding : terjadi ketika deklarasi method subclass dengan nama dan parameter yang sama dengan method dari superclassnya.
langsung ke kodingnya
/*Contoh Inheritance dan Polymorphism pada Java
Author: Rieqy Muwachid Erysya(RieqyNS13)
Twitter: @RieqyNS13*/
import java.util.*;
import java.util.Scanner;
class Game{
public static void main(String[] args){
Leon leon=new Leon(100,23,2,"Leon");
AdaWong adawong=new AdaWong(100,30,3,"Ada Wong");
JackKrauser jackkrauser=new JackKrauser(150,22,1,"Jack Krauser");
System.out.println("1. Leon menyerang Ada Wong");
System.out.println("2. Leon menyerang Jack Krauser");
System.out.println("3. Ada Wong menyerang Leon");
System.out.println("4. Ada Wong menyerang Jack Krauser");
System.out.println("5. Jack Krauser menyerang Leon");
System.out.println("6. Jack Krauser menyerang Ada Wong");
System.out.println("7. Detail Leon");
System.out.println("8. Detail Ada Wong");
System.out.println("9. Detail Jack Krauser");
System.out.println("0. Keluar");
String option="1";
do{
System.out.print("[+]Pilihan : ");
Scanner input=new Scanner(System.in);
option=input.next();
int mbuh=Integer.parseInt(option.trim());
switch(mbuh){
case 1:leon.Serang(adawong);break;
case 2:leon.Serang(jackkrauser);break;
case 3:adawong.Serang(leon);break;
case 4:adawong.Serang(jackkrauser);break;
case 5:jackkrauser.Serang(leon);break;
case 6:jackkrauser.Serang(adawong);break;
case 7:leon.printDeskripsi();break;
case 8:adawong.printDeskripsi();break;
case 9:jackkrauser.printDeskripsi();break;
default:break;
}
System.out.println();
}while(!option.equals("0"));
}
}
class RE4{
private int hp;
private int amunisi;
private int damage;
private String nama;
public RE4(int hp, int amunisi, int damage,String nama){
this.hp=hp;
this.amunisi=amunisi;
this.damage=damage;
this.nama=nama;
}
public void kurangHp(int damage){
this.hp-=damage;
if(this.hp<=0)System.out.println(this.nama+" telah mati");
}
public void tambahHp(int damage){
this.hp+=damage;
}
public void Serang(RE4 obj){
if(this.damage>=1 && this.amunisi>=1 && obj.damage>=1){
if(obj.hp>=1){
System.out.println(this.nama+" menyerang "+obj.nama);
obj.kurangHp(this.damage);
this.amunisi--;
}else System.out.println(obj.nama+" telah mati");
}else{
if(this.damage<=0)System.out.println(this.nama+" telah mati, tidak bisam menyerang "+obj.nama);
if(this.amunisi<=0)System.out.println(this.nama+" kekurangan amunisi untuk menyerang "+obj.nama);
else System.out.println(obj.nama+" telah mati, tidak bisa diserang oleh "+this.nama);
}
}
public void printDeskripsi(){
System.out.println("Player: "+this.nama);
System.out.println("HP tersisa: "+this.hp);
System.out.println("Amunisi tersisa: "+this.amunisi);
System.out.println("Damage amunisi: "+this.damage);
}
}
class Leon extends RE4{
public Leon(int hp, int amunisi, int damage,String nama){
super(hp,amunisi,damage,nama);
System.out.println("Player "+nama+" dibuat");
}
public void kurangHp(int damage){
super.kurangHp(damage);
}
public void tambahHp(int damage){
super.tambahHp(damage);
}
public void Serang(RE4 obj){
super.Serang(obj);
}
public void printDeskripsi(){
super.printDeskripsi();
}
}
class JackKrauser extends RE4{
public JackKrauser(int hp, int amunisi, int damage,String nama){
super(hp,amunisi,damage,nama);
System.out.println("Player "+nama+" dibuat");
}
public void kurangHp(int damage){
super.kurangHp(damage);
}
public void tambahHp(int damage){
super.tambahHp(damage);
}
public void Serang(RE4 obj){
super.Serang(obj);
}
public void printDeskripsi(){
super.printDeskripsi();
}
}
class AdaWong extends RE4{
public AdaWong(int hp, int amunisi, int damage,String nama){
super(hp,amunisi,damage,nama);
System.out.println("Player "+nama+" dibuat");
}
public void kurangHp(int damage){
super.kurangHp(damage);
}
public void tambahHp(int damage){
super.tambahHp(damage);
}
public void Serang(RE4 obj){
super.Serang(obj);
}
public void printDeskripsi(){
super.printDeskripsi();
}
}