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 :
TUGAS PENGAMATAN 2
1. Compile kode program di atas dan jelaskan sebab error yang terjadi!
Jawab : Kode program sudah di perbaiki pada saat praktikum jadi tidak ada error lagi. Error
sebelumnya terjadi pada interface Mobil karena kurangnya method sehingga terjadi
error.
2. Tambahkan method yang diperlukan untuk mengatasi error yang terjadi (No,1) !
Jawab : Sudah di buat pada saat praktikum dan program sudah bisa berjalan dengan baik. Bisa
dilihat dari source code contoh interface.
3. Perhatikan soal 1 (abstract) dan soal 2 ini (interface) dan lakukan poin-poin berikut.
- Apa yang terjadi apabila ditambahkan method biasa yang mengandung body "{}" pada interface
mobil? Jelaskan!
Jawab : Terjadi error karena class Mobil method nya harus abstract. Sedangkan tanda"{}"
menunjukan method memiliki isi/body.
- Jelaskan perbedaan body program antara class abstract dan interface!
Jawab : Perbedaannya, class abstract bisa diisi dengan method memiliki isi/body/kokret.
Sedangkan pada interface method nya tidak boleh memliki body/isi.
- Jelaskan perbedaan penggunaan extends antara soal 1 dan soal 2!
Jawab : Perbedaannya pada soal 1 extends digunakan untuk menghubungkan class induk dan
kelas anak/turunan pada kelas abstract agar kelas turunan/anak dapat melengkapi
body/isi program di kelas induk. Sedangkan pada soal 2 extends digunakan
untuk menghubungkan interface untuk menghubungkan kode program yang terpisah
Tidak ada komentar:
Posting Komentar