Hei welcome to my blog, again maybe? Kali ini saya akan mencoba berbagi tentang perbedaan antara abstract class dan interface di java.
Pengertian Abstract class di java
Abstract Class adalah Class yang dibuat untuk keperluan inheritance/pewarisan. Tujuannya untuk membuat definisi umum bagi class-class yang akan menjadi turunan darinya. Abstract Class dapat digunakan untuk mendefinisikan method yang nantinya akan diimplementasi di Derived Class (kelas turunan / inherit dari Abstract Class ).
Pengertian Interface di java
Interface adalah kumpulan method yang hanya memuat deklarasi dan struktur method, tanpa detail implementasinya. Sedangkan detail dari method berada pada class yang mengimplementasikan interface tersebut. Interface digunakan jika ingin membuat suatu method tertentu, yang tidak diperoleh dari inheritance. Tipe data yang boleh pada interface hanya tipe data konstanta.
Beberapa perbedaan Interface dan Kelas Abstrak yaitu :
Abstract class dapat memiliki tipe data dengan semua tipe data, sedangkan interface tipe datanya berupa konstanta Method pada abstract class berupa method kongkrit dan method abstract. Sedangkan pada interface semua method berupa method abstract.
Abstract Class
|
Interface Class
|
Bisa berisi Abstract dan non Abstract
method
|
Hanya Boleh Berisi Abstract method
|
Bisa Mendeklarasikan Constant dan
Instance
|
Hanya bisa mendeklarasikan Constrant
|
Method boleh bersifat static dan Final
|
Method tidak boleh bersifat static dan
final
|
Suatu abstact class hanya bisa meng-extend satu
abstract class lainnya.
|
Suatu interface hanya bisa meng-extend interface
lainnya. Dan tidak bisa meng-implement class atau interface
lainnya.
|
Berikut Contoh Source Code Absrtack Class dan Interface
- Abstract Class
- Interface
Oke cukup sekian dulu, semoga penjelasan dan contoh diatas dapat membantu. See you again next time.
sumber : http://apotik-ilmu.blogspot.com/2014/09/perbedaan-abstract-dan-inteface-pada.html
Tugas Pengamatan 1
1. Bolehkan di tambahkan body *(statement1; statement1;)* pada method getValue ataupun mehod
prefixValue pada class abstract Abstract class? Jelaskan!
Jawab : Tidak, karena pada abstract method tidak boleh terdapat isi/body.
2. Kembalikan program seperti semula, jelaskan error yang terjadi apabila method getValue() pada
class ConcreteClass1 di hapus?
Jawab : Terjadi error karena class induk yaitu abstract class meminta isi/body program di isi
pada class anak.
3. Kembalikan program seperti semula, selanjutnya perhatikan peredaan hak akses method
getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksudnya!
Jawab : Terdapat perbedaan antara hak akses dimana pada getValue pada class ConcreteClass1
mengembalikan nilai "ConcreteClass1". Sedangkan getValue pada class ConcreteClass2
mengembalikan nilai "ConcreteClass2".
4. Buatlah abstract method yang bernama getValue2 pada class class ConcreteClass1? Compile dan
mengapa terjadi error?
Jawab : Error karena tidak ada mehod isi/body yang memiliki nilai return.
5. Ikuti soal nomor 4. Silahkan ubah class ConcreteClass1 menjadi abstract . Selanjutnya jelaskan
mengapa terjadi error ?
Jawab : Error karena pada class ConcreteClass1 terdapat perintah @overide dmana perintah itu
untuk mereplace abstract method di class induk.
6. Dengan menggunakan kode program di atas serta ditambahkan satu abstract method bernama
"gabungan" TANPA PARAMETER pada parent class, hasilkan output berikut :
TATANK
Mr.Tatank
Mr.Tatank hobi meloncat
Kells
Mrs.Kells
Mrs.Kells hobi melet
Jawab :