Kamis, 17 November 2016

Java Programming : Overriding dan Overloading

Assalamu'alaikum.
Halo halo halo.. Kali ini halo-nya 3 kali.. xD
Dan pada postingan kali ini, saya akan membahas tentang overriding dan overloading dalam Java.
@_@ Dari namanya aja udah kelihatan susah.. >_< tapi saya akan berusaha untuk menjelaskannya sesederhana mungkin.

Overriding

Overriding disini adalah suatu class dimana class ini merupakan turunan dari class lain (yang jelas class lain ini haruslah dibuat lebih dulu sebelum class turunannya).
NORMALNYA YANG BACA MESTI MASIH BINGUNG..
Lanjut, untuk lebih gampangnya bisa lihat source code dibawah.

public class binatang
{
    public void singa(){
        System.out.println("Ini adalah raja hutan, Singa");
    }
    public void ayam(){
        System.out.println("Saya ayam, siap dimakan");
    }
}

public class Mamalia extends binatang {
    // overriding method parent class
    public void ayam(){
        System.out.println("Tunggu.. Harusnya aku anak ayam.. Ibuku mana??");
    }
    public void sapi(){
        System.out.println("Moo moo.. Moo moo.. Pak pak, susu saya siap diperah lo..");
    }
}

public class PenggunaanOverriding{
    public static void main(String[] args){
        binatang b = new binatang();
        Mamalia m = new Mamalia();
        binatang bm = new Mamalia();
      
        b.singa();
        b.ayam();
        m.ayam();
        bm.ayam();
        bm.singa();
        m.sapi();
    }
}


Pada source code diatas, class Mamalia merupakan class turunan dari class binatang.
Simple kan? Konsep overriding secara sempit emang cuma gitu aja. Cuma kalo secara luas, ga tau lagi.. xD
Lanjut, nah untuk apa dibuat overriding ini? overriding ini digunakan untuk menutupi method dari class parent dengan class turunannya.

Untuk lebih jelasnya coba perhatikan class PenggunaanOverriding.
Di dalam class itu ada fungsi main yang memanggil method dengan perintah bm.ayam(), dimana bm sendiri adalah sebuah variabel dengan tipe binatang, dengan di-assign dalam class Mamalia. Tapi disini, variabel bm hanya bisa mengakses class binatang saja, bukan class Mamalia.
Nah, karena variabel bm ini hanya bisa mengakses class binatang, harusnya ketika perintah bm.ayam() ini dijalankan, akan memanggil method ayam() yang ada di class binatang.
TAPI TAPI TAPI TAPI.. Karena class binatang punya class turunan yaitu Mamalia, otomatis method yang dipanggil bukannya ke class binatang, tapi malah ke class Mamalia.
HAL INI HANYA BERLAKU JIKA DUA CLASS TERSEBUT MEMILIKI SATU METHOD YANG SAMA.

Kalo masih bingung dengan tulisan-tulisan diatas, lihat gambar aja deh.. Mungkin bisa lebih paham kalo lihat visualisasi dari source codenya langsung kan?? xD


Overloading

Overloading adalah method dengan nama yang sama, tapi memiliki bentuk parameter yang berbeda.
Yang ini harusnya lebih mudah dipahami nih..
Gampangnya gini, contoh overloading adalah:

public void fungsi(){}
public void fungsi(int){}
public void fungsi(double){}
public void fungsi(int, int){}


Keempat method diatas adalah contoh overloading.
Jadi yang membedakan antara satu dengan yang lain adalah bentuk parameternya.
Untuk public void fungsi() >> method fungsi tanpa parameter
Untuk public void fungsi(int) >> method fungsi dengan satu parameter integer
Untuk public void fungsi(double) >> method fungsi dengan satu parameter double
Untuk public void fungsi(int, int) >> method fungsi dengan dua parameter integer

Contoh source codenya bisa dilihat dibawah ini.

public class MyClass
{
    int height;
    MyClass(){
        System.out.println("bricks");
        height = 0;
    }
   
    MyClass(int i){
        System.out.println("Building a new house that is " + i + " feet tall");
        height = i;
    }
   
    void info(){
        System.out.println("House is " + height + " feet tall");
    }
   
    void info(String s){
        System.out.println(s + " : House is " + height + " feet tall");
    }
}

public class MainClass
{
    public static void main(String[] args){
        MyClass t = new MyClass(2);
        t.info();
        t.info("overloaded method");
        // Overload Constructor:
        new MyClass();
    }
}


Gambaran programnya bisa dilihat dibawah ini
 


Sekian penjelasan singkat tentang overriding dan overloading. Dan pastinya anda tidak akan puas dengan penjelasan seperti ini. Maka dari itu, carilah sumber lain yang bisa mendukung supaya anda lebih tahu tentang overriding dan overloading, karena yang saya bisa bantu kurang lebih sejauh ini saja.. hehehehe.. xD

Dan seperti biasa, jika ada pertanyaan atau saran untuk postingan ini, silahkan tulis di komentar. Terima kasih.
Wassalamu'alaikum.

Tidak ada komentar:

Posting Komentar