Seputar Dunia IT dan Fakta Unik Lainnya

Monday 29 February 2016

Software Project - Inheritance, Overriding, Overloading



INHERITANCE

  • Dengan menggunakan konsep inheritance, kita dapat membuat class turunan dari class lainnya. Class turunan mewarisi semua atribut dan method dari class induk.
  • Class induk disebut superclass. Class turunan disebut subclass.
  • Inheritance dapat dibuat bertingkat-tingkat, misalkan class Kucing adalah turunan dari class Mammalia yang diturunkan dari class Vertebrata yang diturunkan dari class Animal, yang merupakan turunan dari class MakhlukHidup.
  • Contoh lain: MahasiswaD3, MahasiswaS1, MahasiswaS2, MahasiswaS3 semuanya adalah turunan dari class Mahasiswa.



CLASS INDUK (SUPER CLASS)

class Segiempat{
int panjang;
int lebar;
.....
int hitungLuas(){…}
int hitungKeliling() {…}
}


CLASS ANAK (SUBCLASS)

class Balok extends Segiempat{
int tinggi;
int hitungVolume(){
789 return (hitungLuas() * tinggi);
}
}


class Prisma extends Segiempat{
int tinggi;
int hitungVolume(){
return (1/3 * hitungLuas() * tinggi);
}
}


WHY WE NEED INHERITANCE ?

  • Untuk reusability.
  • Mengurangi redundancy coding.
  • Memudahkan maintenance sourcecode.


SINGLE VS MULTIPLE INHERITANCE

  • Di Java hanya ada single-inheritance. Jadi suatu class hanya boleh punya 1 induk saja.
  • Pada bahasa lain seperti C++ ada multiple inheritance.
  • Mengapa Java tidak menyediakan fitur multiple-inheritance? Karena karena membuat pusing programmer. Java dibuat dengan tujuan agar mudah dipelajari dan mudah bagi programmer.


ACCESS PROTECTED

Access Protected sifatnya pertengahan (di antara public dan private), bila diterapkan pada atribut/ method maka akses protected ini berarti :
  • Dapat diakses oleh semua class turunannya
  • Tidak dapat diakses oleh yang bukan class turunannya


OVERRIDING

  • Overriding adalah pendefinisian ulang sebuah method di class induk, misalnya karena kita membutuhkan rumus/algoritma berbeda yang spesifik untuk class anak.

Misalkan pada class Balok turunan Segiempat. Secara otomatis (by default), Balok mewarisi method hitungLuas() dari Segiempat, dengan rumus panjang kali lebar. Kita ingin meng-override method tersebut dengan rumus baru misalnya rumus luas permukaan.

class Balok extends Segiempat{
Public int hitungLuas(){
return ((2*pjg*lb)+(2*pjg*tgg)+(2*lbr*tgg));
}}

Perhatikan bedanya ketika kita memanggil method hitungLuas untuk sebuah object Balok :

public static void main(String args[]){
Balok ba = new Balok(7,3,5);
ba.hitungLuas();  // menghitung luas permukaan
}


ATURAN OVERRIDING

Ketika kita membuat method override di class anak, aturannya adalah sebagai berikut :
  • Nama method harus sama dengan method di class induk: contoh hitungLuas()
  • Daftar parameter harus sama: hitungLuas(/*kosong*/)
  • Return type harus sama: void hitungLuas()


SUPER

  • Syntax Super dapat digunakan untuk mengacu ke kelas induk.

Misalnya method printAtribut pada Balok ingin memanggil method printAtribut di Segiempat.

Class Balok extends Segiempat {
public void printAtribut(){
super.printAtribut(); //menampilkan panjang & lebar
System.out.println(tinggi);
}
}


THIS

Syntax this digunakan untuk mengacu pada kelas dirinya sendiri, misalnya untuk membedakan atribut dengan variabel lokal. Contohnya :

class Segiempat{
private int panjang;
public void setPanjang(int panjang){
this.panjang = panjang;
}
}


FINAL CLASS

  • Final class artinya suatu class tidak dapat diturunkan lagi (tidak boleh punya anak).

Contoh untuk class Segiempat :

final class Segiempat{
}

Maka class Segiempat tidak bisa diextends oleh class Balok dan Prisma.


FINAL ATTRIBUTE

  • Final atribut digunakan untuk mendefinisikan konstanta.

Contoh :

class Lingkaran {
double radius;
final double pi=3.14;
}


FINAL METHOD

  • Method yang dibuat final artinya tidak dapat diturunkan/dioverride.
  • Contoh: bila method hitungLuas() pada Segiempat dibuat final maka class turunannya yaitu class Balok dan class Prisma tidak bisa meng-override method hitungLuas().


OVERLOADING

Overloading yaitu mendefinisikan beberapa method yang namanya sama, tapi memiliki parameter yang berbeda. Misalnya pada class Titik kita bisa membuat tiga method yang sama :
  • Public void translasi(int dx)
  • Public void translasi(int dx,int dy)
  • Public void translasi(int dx,int dy,int dz)

Overloading tidak berhubungan dengan inheritance.



Aturan Overloading :

  • Nama method harus sama: void translasi(/*bebas*/)
  • Daftar parameter/argumen method harus berbeda :
    > Berbeda jumlah parameter atau kalau jumlahnya sama, harus beda tipe datanya
  • Return type boleh sama, juga boleh berbeda

Contoh lain, yaitu Overloading Constructor :

  • public Segiempat ()
  • public Segiempat (int p, int l)



No comments:

Post a Comment

BILA ANDA MEMASUKKAN LINK HIDUP, MAKA AKAN OTOMATIS TERDELETE..

Blog Archive