Langsung ke konten utama

Memahami Inheritance dan Method Overriding

Memahami Inheritance dan Method Overriding


Java Oop Inheritance
Seperti yang sudah kita pelajari pada tulisan sebelumnya: sebuah class atau objek bisa saling berhubungan dengan class yang lain.
Salah satu bentuk hubungannya adalah inheritance (pewarisan). Hubungan ini seperti hubungan keluarga antara orang tua dan anak.
Sebuah class di Java, bisa memiliki satu atau lebih keturunan atau class anak. Class anak akan memiliki warisan properti dan method dari class ibu.
Pada tutorial ini kita akan belajar:
  1. Kenapa kita harus menggunakan inheritance?
  2. Contoh Program inheritance
  3. Method Overriding
Mari kita mulai…

Kenapa Kita Harus Menggunakan Inheritance?

Misalkan dalam Game, kita akan membuat class-class musuh dengan perilaku yang berbeda.
Class-Class Musuh
Lalu kita membuat kode untuk masing-masing kelas seperti ini:
File: Zombie.java
class Zombie {
    String name;
    int hp;
    int attackPoin;

    void attack(){
        // ...
    }

    void walk(){
        //...
    }
}
File: Pocong.java
class Pocong {
    String name;
    int hp;
    int attackPoin;

    void attack(){
        // ...
    }

    void jump(){
        //...
    }
}
File: Burung.java
class Burung {
    String name;
    int hp;
    int attackPoin;

    void attack(){
        // ...
    }

    void walk(){
        //...
    }

    void jump(){
        //...
    }

    void fly(){
        //...
    }
}
Apakah boleh seperti ini?
Ya, boleh-boleh saja. Akan Tapi tidak efektif, karena kita menulis berulang-ulang properti dan method yang sama.
Bagaimana solusinya?
Kita harus menggunakan inheritance.
Mari kita lihat memeber class yang sama:
Class-Class Musuh
Setelah menggunakan inheritance, maka akan menjadi seperti ini:
Class-Class Musuh
Oya, inheritance di StarUML digambarkan dengan garis hubung Generalization.
Class Enemy adalah class induk yang memiliki anak ZombiePocong, dan Burung. Apapun properti yang ada di class induk, akan dimiliki juga oleh class anak.
Lalu bagaimana bentuk kodenya dalam Java?
Bentuk kodenya akan seperti ini:
File: Enemy.java
class Enemy {
    String name;
    int hp;
    int attackPoin;

    void attack(){
        System.out.println("Serang!");
    }
}
Pada class anak, kita menggunakan kata kunci extends untuk menyatakan kalau dia adalah class turunan dari Enemy.
File: Zombie.java
class Zombie extends Enemy {
    void walk(){
        System.out.println("Zombie jalan-jalan");
    }
}
File: Pocong.java
class Pocong extends Enemy {
    void jump(){
        System.out.println("loncat-loncat!");
    }
}
File: Burung.java
class Burung extends Enemy {
    void walk(){
        System.out.println("Burung berjalan");
    }
    void jump(){
        System.out.println("Burung loncat-loncat");
    }
    void fly(){
        System.out.println("Burung Terbang...");
    }
}
Lalu, bila kita ingin membuat objek dari class-class tersebut, Kita bisa membuatnya seperti ini:
Enemy monster = new Enemy();
Zombie zumbi = new Zombie();
Pocong hantuPocong = new Pocong();
Burung garuda = new Burung();

Contoh Program Inheritance

Setelah memahami konsep inheritance, sekarang mari kita buat contoh program sederhana.
Program yang akan kita buat untuk berfungsi untuk menghitung luas dan keliling bangun datar.
Bentuk class diagramnya seperti ini:
Class BangunDatar
Baik, mari kita buat semua class-class-nya.
Buka Netbeans, pada Porject yang kemarin, buatlah package baru bernama inheritance di dalam Source Packages.
Membuat Package Baru di netbeans
Isi nama package dengan inheritance.
Membuat Package Baru di netbeans
Berikutnya buatlah class-class baru berdasarkan diagram di atas.
File: inheritance/BangunDatar.java
package inheritance;

public class BangunDatar {
    
    float luas(){
        System.out.println("Menghitung laus bangun datar");
        return 0;
    }
    
    float keliling(){
        System.out.println("Menghitung keliling bangun datar");
        return 0;
    }
    
}
File: inheritance/Persegi.java
package inheritance;

public class Persegi extends BangunDatar {
    float sisi;   
}
File: inheritance/Lingkaran.java
package inheritance;

public class Lingkaran extends BangunDatar{
    
    // jari-jari lingkaran
    float r;
    
}
File: inheritance/PersegiPanjang.java
package inheritance;

public class PersegiPanjang extends BangunDatar {
    float panjang;
    float lebar;
}
File: inheritance/Segitiga.java
package inheritance;

public class Segitiga extends BangunDatar {
    
    float alas;
    float tinggi;
    
}
File: inheritance/Main.java
package inheritance;

public class Main {
    public static void main(String[] args) {
        
        // membuat objek bangun datar
        BangunDatar mBangunDatar = new BangunDatar();
        
        // membuat objek persegi dan mengisi nilai properti
        Persegi mPersegi = new Persegi();
        mPersegi.sisi = 2;
        
        // membuat objek Lingkaran dan mengisi nilai properti
        Lingkaran mLingkaran = new Lingkaran();
        mLingkaran.r = 22;
        
        // membuat objek Persegi Panjang dan mengisi nilai properti
        PersegiPanjang mPersegiPanjang = new PersegiPanjang();
        mPersegiPanjang.panjang = 8;
        mPersegiPanjang.lebar = 4;
        
        // membuat objek Segitiga dan mengisi nilai properti
        Segitiga mSegitiga = new Segitiga();
        mSegitiga.alas = 12;
        mSegitiga.tinggi = 8;
        
        
        // memanggil method luas dan keliling
        mBangunDatar.luas();
        mBangunDatar.keliling();
        
        mPersegi.luas();
        mPersegi.keliling();
        
        mLingkaran.luas();
        mLingkaran.keliling();
        
        mPersegiPanjang.luas();
        mPersegiPanjang.keliling();
        
        mSegitiga.luas();
        mSegitiga.keliling();
    }
}
Setelah itu, coba jalankan class Main, maka hasilnya:
Hasil Eksekusi Program Inheritance

Komentar

Postingan populer dari blog ini

Apa Saja yang Baru di Java 11?

Apa Saja yang Baru di Java 11? Java 11 sudah dirilis pada tanggal 25 September 2018 kemarin. Banyak ‘pembersihan’ yang terjadi pada versi ini. Seperti: Java EE, CORBA, Java applets, dan Java FX sudah dihapus di dalam JDK  (Java Development Kit) .  1 Tapi tenang saja… mereka masih bisa  di-install dari repositori Mavan . Lalu… Apa saja fitur terbaru pada Java 11? dan apa saja yang akan dihapus? Sebelum kita migrasi atau  upgrade  ke Java 11, kita haurs tahu dua hal ini. Agar aplikasi yang kita bangun dengan Java, bisa berjalan dengan lancar. Mari kita bahas… Download & Install Java 11 Sebelum itu… jika kamu ingin mencoba Java 11, silahkan download JDK-nya:   Download OpenJDK 11   Download OracleJDK 11 Saya akan download OpenJDK 11 untuk Linux. Nanti kita akan mendapatkan sebuah file arsip  tar.gz . Setelah itu ekstrak ke tempat yang aman. Saya akan mengekstraknya ke direktori  ~/apps/ . Apa...

Menghitung Akar Kuadrat dan Akar Kubik dengan Java

Menghitung Akar Kuadrat dan Akar Kubik dengan Java Pada pelajaran Matematika, kadang kita sering menemukan perhitungan akar. Contoh, akar kuadrat dari  25  adalah  5 , karena  5x5=25 , bisa ditulis:  √ 25 = 5 25 = 5 . Lalu kalau akar kubik dari  27  adalah  3 , karena  3x3x3=27 , bisa ditulis:  3 √ 27 = 3 27 3 = 3 . Bagaimana cara kita membuat perhitungan tersebu di Java? Perhitungan akar kuadrat dapat dilakukan dengan fungsi  sqrt() . Fungsi ini terdapat dalam  class   Math . Jadi untuk menghitung akar seperti di atas dalam kode java dapat dilakukan dengan cara berikut ini: Math . sqrt ( 25 ) ; Fungsi tersebut akan menghasilkan:  5 Sementara itu untuk perhitungan akar kubik dapat dilakukan dengan fungsi  cbrt() . Contoh: Math . cbrt ( 27 ) ; Akan menghasilkan:  3 Contoh Penerapannya dalam Program Sekarang mari kita coba membuat program untuk menghitung rumus pitagoras. Rum...

Contoh Program OOP

Contoh Program OOP Kita akan menggunakan Netbeans, silahkan buat project baru. Isi nama project-nya dengan  “BelajarOOP”  dan jangan centang  “Create Main Class” . Setelah itu, silahkan buat  package  baru. Klik kanan pada  <default package> , lalu pilih  New->Java Package . Isi nama  package  dengan  “dasar” : Setelah itu, di dalam package  dasar , silahkan buat  class  baru bernama  Player.java . Klik kanan pada package  dasar  lalu pilih  New->Java Class . Setelah itu, isi namanya dengan  Player.java . Silahkan tulis kode pada  Player.java  seperti ini: package dasar ; public class Player { // definisi atribut String name ; int speed ; int healthPoin ; // definisi method run void run ( ) { System . out . println ( name + " is running..." ) ; System . out . println ( "Speed: " + speed ) ; ...