Tuesday, February 26, 2013

Inheritance (Pewarisan) Pada Java

Inheritance/pewarisan adalah membuat class baru yang masih mempunyai spesifikasi (state & behaviour) yang sama dengan class yang sudah ada.
Class yang baru disebut class turunan/subclass sementara,
class yang sudah ada disebut dengan class induk/superclass.         


 SubClass (class turunan) akan memiliki(mewarisi) semua ciri dan sifat dari SuperClass (class induk).
Keyword yang digunakan dalam pewarisan ini adalah "EXTENDS ".

program ex.: induk_anak.java
----------------------------
class induk {
    int A, B;
         
    void tampil() {
        System.out.println("Nilai A : " + A + ", B : " + B);
    }
}

class anak extends induk { //-----> membuat class "anak" yang diturunkan(inherite) dari class "induk"
    int C;

    void jumlah() {
        // class "anak" juga mempunyai member (state) milik class "induk"
        System.out.println("Jumlah : " + (A+B+C) );
    }
}

class induk_anak {
    public static void main(String[] args) {
        induk hen_cock = new induk();
        anak chicken   = new anak();

        System.out.println("Class Induk/SuperClass");
        hen_cock.A = 1;
        hen_cock.B = 2;
        hen_cock.tampil();

        System.out.println("Class Anak/SubClass");
        chicken.A = 3;
        chicken.B = 4;
        chicken.tampil();

        chicken.z = 5;
        chicken.jumlah();
    }
}
----------------------------

Hasil :
Class Induk/SuperClass
Nilai A : 1, B : 2
Class Anak/SubClass
Nilai A : 3, B : 4
Jumlah : 12
----------------------------


Pada Class turunan dapat ditambahkan state & behaviour yang baru,
yang merupakan/bersifat spesifik milik subclass itu sendiri.
Ex: var C dan method jumlah

Dimungkinkan juga untuk pendefinisian ulang state & behaviour
dari class induk di class turunan (overloading/overriding).

program ex.: induk_anak2.java
----------------------------
class induk {
    int A, B;
         
    void tampil() {
        System.out.println("Nilai A : " + A + ", B : " + B);
    }
}

class anak2 extends induk { //-----> membuat class "anak" yang diturunkan(inherite) dari class "induk"
    int C;

    void tampil() {
        System.out.println("Nilai A : " + A + ", B : " + B + ", C : " + C);
    }

    void jumlah() {
        // class "anak" juga mempunyai member (state) milik class "induk"
        System.out.println("Jumlah : " + (A+B+C) );
    }
}

class induk_anak {
    public static void main(String[] args) {
        induk hen_cock = new induk();
        anak chicken   = new anak();

        System.out.println("Class Induk/SuperClass");
        hen_cock.A = 1;
        hen_cock.B = 2;
        hen_cock.tampil();

        System.out.println("Class Anak/SubClass");
        chicken.A = 3;
        chicken.B = 4;
        chicken.tampil();

        chicken.z = 5;
        chicken.jumlah();
    }
}
----------------------------

Hasil :
Class Induk/SuperClass
Nilai A : 1, B : 2
Class Anak/SubClass
Nilai A : 3, B : 4, C : 5
Jumlah : 12
----------------------------

Dengan adanya overriding method, object akan langsung menggunakan method
yang didefinifikan pada class tersebut.
Sehingga untuk mengakses method yang sama milik class induk dibutuhkan keyword "super".
ex:
    super.A=3;
    super.tampil();


Dimungkinkannya inheritance dan overriding method, class turunan dapat dipastikan juga
memiliki construktor dari class induk.
Untuk menggunakan construktor milik class induk anda cukup menggunakan keyword "super" seperti di atas.
Namun anda tidak perlu menuliskan nama construktor tersebut (ex: super.induk()).
Cukup gunakan keyword "super" ditambah dengan daftar parameter yang sama dengan cunstruktor milik induk.

program ex.: induk_anak3.java
----------------------------
class induk {
    int A, B;
             
    induk(int x, int y) {
        A = x;
    B = y;
    }

    void tampil() {
        System.out.println("Nilai A : " + A + ", B : " + B);
    }
}

class anak2 extends induk { //-----> membuat class "anak" yang diturunkan(inherite) dari class "induk"
    int C;

    induk(int x, int y, int z) {
        super(x,y);
    C = z;
    }

    void tampil() {
        System.out.println("Nilai A : " + A + ", B : " + B + ", C : " + C);
    }

    void jumlah() {
        // class "anak" juga mempunyai member (state) milik class "induk"
        System.out.println("Jumlah : " + (A+B+C) );
    }
}

class induk_anak {
    public static void main(String[] args) {
        induk hen_cock = new induk();
        anak chicken   = new anak();

        System.out.println("Class Induk/SuperClass");
        hen_cock.A = 1;
        hen_cock.B = 2;
        hen_cock.tampil();

        System.out.println("Class Anak/SubClass");
        chicken.A = 3;
        chicken.B = 4;
        chicken.tampil();

        chicken.z = 5;
        chicken.jumlah();
    }
}
----------------------------


Di Java tidak diizinkan "multiple inheritance" seperti yang diizinkan di C++ .
ex:  class jajarangenjang : public segiempat, public segitiga

Namun ada cara lain untuk menurunkan beberapa kelas dalam satu class,
yaitu "multilevel (inheritance) hierarchy".
Ex:

class induk{
    ......
    ......
}

class anak extends induk{
    ......
    ......
}

class cucu extends anak{
    ......
    ......
}


Dari program diatas, class cucu akan memiliki spesifikasi/sifat seperti yang dimiliki
class anak dan induk sekaligus.


Keuntungan :
    1. Reusable code, tidak perlu mendefinisikan/membuat method lagi. Gunakan saja yang sudah ada.
    2. Hemat waktu, biaya dan tenaga dalam pengembangan program.


3 comments:

  1. THANKS BANGETTTTTTTTTTTTTTT,,,,, you save my life..... hahahaha.... buat tugas ane neng,,,, keep blogging yah,, tulislah tulisan yang berguna.... oia kunjungi blog saya http://redanorak.blogspot.com

    ReplyDelete

Kebahagiaan sejati bukanlah pada saat kita berhasil meraih apa yg kita perjuangkan, melainkan bagaimana kesuksesan kita itu memberi arti atau membahagiakan orang lain.