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.
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.
lanjutkan, keren artikelnya
BalasHapusMantap nduk lanjutkan..
BalasHapusNice idea, good experience
BalasHapus