Abstract Class , Concrete Class dan Interface

Apa itu Abstract Class ?

Abstract class adalah suatu kelas yang didefinisikan dengan abstract. Dalam abstract kelas harus memiliki setidaknya satu buah abstract methode , dan abstract methode tersebut tidak memiliki body. Intinya sebuah kelas abstract nantinya dijadikan sebagai super class, sementara subclass harus mendifinisikan kembali methode abstract yang terdapat pada kelas abstract sekaligus dengan implementasinya. Perlu diingat juga bahwa abstract kelas tidak dapat digunakan untuk membuat objek.
Secara garis besar , dapat ditarik kesimpulan bahwa Abstract class memiliki ciri-ciri :
Mendifinisikan kelas yang bersifat abstract
Tidak dapat digunakan untuk membuat objek
Harus memiliki minimal 1 methode  abstract
Digunakan sebagai base class untuk membuat concrete class
Dibentuk dengan menggunakan kata kunci abstract pada saat definisi class
Akan selalu menjadi super class / kelas tertinggi dari subclass – subclass nya.

Kapan Abstract kelas digunakan ?

Abstract class digunakan ketika terdapat beberapa subclass turunan dari sebuah superclass memiliki methode sama dengan implementasi yang berbeda. Misalkan , terdapat superclass makhluk hidup dengan methode bernafas, bergerak, tidur. Kemudian superclass tersebut memiliki beberapa subclass seperti manusia dan hewan, manusia dan hewan memiliki sifat yang diturunkan dari superclassnya yaitu bernafas, bergerak dan tidur, akan tetapi cara manusia dan hewan bernafas, bergerak dan tidur bebeda. .Sehingga superclass makhluk hidup dibuat menjadi class abstract dengan semua methodenya yang berbeda implementasi antara subclass yang satu dengan yang lain di buat menjadi abstract methode



Bagaimana dengan Concrete class ?
Concrete class adalah class dalam java yang memiliki implementasi dari semua anggota yang diwariskan dari interface class ataupun abstract class. Cocreate class merupakan class  untuk mengimplementasikan apa yang dibutuhkan oleh abstract class. Concrete class biasa juga dikatan sebagai sub class dari abstract class.
Ciri –ciri Concrete class :
Mendifinisikan kelas yang nyata
Dapat membentuk atau instansi object
Dapat menurunkan implementasi dari super class
Kapan Concrete kelas digunakan ?
Concrete class digunakan bersamaan dengan abstract class. Karena concrete class merupakan sublass tembpat di implementasikannya fungsi-fungsi yang dibutuhkan.

Pengertian Interface
Interface adalah wadah dari kumpulan method yang bersifat abstrak atau tidak memiliki implementasi. Sedangkan method yang didefinisikan di dalam interface tersebut akan diimplementasikan oleh class yang mengimplementasikan interface tersebut. Interface merupakan bentuk perluasan dari kelas abstrak.
Selain method, interface juga dapat berisi sekumpulan variable, namun variable yang dideklarasikan di dalam interface harus bersifat final(nilainya tidak dapat diubah /konstan).Sebagai contoh : Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut selain harus memiliki method standard sebagai seorang manusia, juga harus memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat objek manusia yang bekerja sebagai penyanyi, harus dibuat kelas yang merupakan turunan kelas manusia yang meng-implementasikan interface penyanyi.


Kapan Interface digunakan ?
Kita  akan  menggunakan  interface  jika  kita  ingin  class  yang  tidak  berhubungan mengimplementasikan  method  yang  sama.  Melalui  interface-interface,  kita  dapat  menangkap  kemiripan  diantara  class  yang  tidak  berhubungan  tanpa  membuatnya  seolah-olah class yang berhubungan.
Mari  kita  ambil  contoh  class  Line  dimana  berisi  method  yang  menghitung  panjang  dari garis dan membandingkan object Line ke object dari class yang sama. Sekarang, misalkan kita  punya  class  yang  lain  yaitu  MyInteger  dimana  berisi  method  yang  membandingkan object  MyInteger  ke  object  dari  class  yang  sama.  Seperti  yang  kita  lihat  disini,  kedua class-class mempunyai method yang mirip dimana membandingkan mereka dari object lain dalam  tipe  yang  sama,  tetapi  mereka  tidak  berhubungan  sama  sekali.  Supaya  dapat menjalankan  cara  untuk  memastikan  bahwa  dua  class-class  ini  mengimplementasikan beberapa  method  dengan  tanda  yang  sama,  kita  dapat  menggunakan  sebuah  interface untuk  hal  ini.
Seperti yang telah kita tau, class dapat mengimplementasikan sebuah interface selama kode implementasi untuk semua method yang didefinisikan dalam interface tersedia.Hal  lain  yang  perlu  dicatat  tentang  hubungan  antara  interface  ke  class-class  yaitu,  class hanya dapat meng extend satu superclass, tetapi dapat meng implementasikan banyak interface.


Contoh Skema Abstract Class 




Pada skema di atas terdapat class animal , dimana class tersebut di abstract dan terdiri atas beberapa methode , yaitu methode nama , nama binatang , jenis makanan dan alat pernafasan. Pada methode yang dicetak tebal merupakan abstract methode yang harus di instansi kembali pada kelas turunannya yaitu pada subclass burung, reptil dan mamalia. Artinya setiap subclass dibawahnya sudah pasti memiliki methode tersebut dengan implementasi yang berbeda. Sementara itu, kelas dibawahnya / subclass (class burung, reptil, dan animal) juga disebut sebagai concrete class.


Contoh program untuk Abstract Class 

package example;
public abstract class animal {
public void nama() {
System.out.println("Kingdom Animal");
}
public abstract void namabinatang();
public abstract void jenismakanan();
public abstract void alatpernafasan();

}


Pada program di atas abstract class animal sekaligus menjadi superclass dari subclass-subclass turunannya


Contoh program untuk Concrete Class 

Untuk concrete class berikut merupakan turunan dari superclass animal pada program di atas

Subclass1

package example;
public class burung extends animal {



@Override
public void jenismakanan() {
// TODO Auto-generated method stub
System.out.println("jenis makanannya  biji-bijian");

}

@Override
public void alatpernafasan() {
// TODO Auto-generated method stub
System.out.println("Bernafas dengan paru-paru");


}

@Override
public void namabinatang() {
// TODO Auto-generated method stub
System.out.println("Pelatuk");

}

}

Subclass 2

package example;
public class reptil extends  animal {

@Override
public void jenismakanan() {
// TODO Auto-generated method stub
System.out.println("Jenis makanannya adalah daging");

}

@Override
public void alatpernafasan() {
// TODO Auto-generated method stub
System.out.println("Bernafas dengan kulit");

}

@Override
public void namabinatang() {
// TODO Auto-generated method stub
System.out.println("Ular");

}

}

Subclass 3

package example;
public class mamalia  extends animal{

@Override
public void jenismakanan() {
// TODO Auto-generated method stub
System.out.println("Jenis Makanannya daging dan tumbuhan");

}

@Override
public void alatpernafasan() {
// TODO Auto-generated method stub
System.out.println("Bernafas dengan paru-paru");

}

@Override
public void namabinatang() {
// TODO Auto-generated method stub
System.out.println("Kambing");

}

}

Main Program dari program-program di atas :

package example;
public class mainanimal {

public static void main(String[] args) {


// TODO Auto-generated method stub
System.out.println("Berikut ini adalah jenis-jenis Hewan");
System.out.println("");
System.out.println("Kelas Aves :");
burung pelatuk = new burung();
pelatuk.namabinatang();
pelatuk.jenismakanan();
pelatuk.alatpernafasan();
System.out.println("");
System.out.println("Kelas Reptil:");
reptil ular = new reptil();
ular.namabinatang();
ular.jenismakanan();
ular.alatpernafasan();
System.out.println("");
System.out.println("Kelas Mamalia :");
mamalia kambing= new mamalia();
kambing.namabinatang();
kambing.jenismakanan();
kambing.alatpernafasan();

}

}


Hasil Running Program




Contoh Program Interface

Interface :

package example;

public interface suara {
public void suara1();
public void suara2();


}

Class yang mengimplementasikan interface diatas :

package example;

public class suarahewan implements suara {

@Override
public void suara1() {
// TODO Auto-generated method stub
System.out.println("Guk-Guk");

}

@Override
public void suara2() {
// TODO Auto-generated method stub
System.out.println("Meow-meow");


}

public static void main(String[]args) {
suarahewan hewan1 = new suarahewan();
hewan1.suara1();
hewan1.suara2();



}
}


  Pada program diatas apabila di running akan menampilkan “Guk-Guk” dan “Meow-meow”.

Dari apa yang telah diuraikan diatas mengenai abstract class, concrete class dan interface sebenarnya saling berhubungan. Abstract digunakan untuk mengabstraksi sebuah kelas agar bisa membuat abstract methode yang bisa di turunkan kepada subclass- subclassnya (concrete class) dengan implementasi berbeda. Sementara interface dibuat agar sebuah sub kelas (concrete class) dapat mengimplementasi lebih dari 1 interface ,sebab sebuah subclass tidak dapat mengextends lebih dari 1 superclass.

Komentar

Posting Komentar

Postingan populer dari blog ini

ITIL