Seorang anak manusia dari dua insan terhebat. Hidup di ruang keanehan bernama dunia yang kusebut surga. Surganya tanda tanya.

Monday, May 2, 2016

Perbedaan Interface dan Abstract Class pada Java

Pengertian Interface

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 mengaplikasikan suatu method yang spesifik, yang tidak diperoleh dari proses inheritance. Tipe data yang boleh pada interface hanya tipe data konstan.



Pengertian Abstract pada java

Abstract Class merupakan Class yang khusus dibuat untuk keperluan inheritance. Tujuan dari pembuatan abstract class ini ialah 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 ).

Penjelasan Tentang Abstract Dan interface :
Beberapa perbedaan Interface dan Kelas Abstrak yaitu :
Abstract class dapat memiliki tipe data dengan semua tipe data, sedangkan interface tipe datanya hanya berupa konstanta Method pada abstract class dapat berupa method kongkrit dan method abstract. Sedangkan pada interface semua method harus berupa method abstract.



Abstract ClassInterface
Bisa berisi abstract dan non-abstract method.Hanya boleh berisi abstract method.
Kita harus menuliskan sendiri modifiernya.Kita tidak perlu susah2 menulis public abstract di depan nama method. Karena secara implisit, modifier untuk method di interface adalah public danabstract.
Bisa mendeklarasikan constant dan instance variable.Hanya bisa mendeklarasikan constant.  Secara implisit variable yang dideklarasikan di interface bersifatpublicstatic dan final.
Method boleh bersifat static.Method tidak boleh bersifat static.
Method boleh bersifat final.Method tidak boleh bersifat final.
Suatu abstact class hanya bisa meng-extend satu abstract class lainnya.Suatu interface bisa meng-extend  satu atau lebih interface lainnya.
Suatu abstract class hanya bisa meng-extend satu abstract class dan meng-implement beberapa interface.Suatu interface hanya bisa meng-extend interface lainnya.  Dan tidak bisa meng-implement class atau interface lainnya.





Contoh program Abstract Class pada java dan interface:  


Abstract Class 




Soal Pengamatan 1


  1. Bolehkah ditambah body "(statement1; statment;)" pada method getValue ataupun method perfixValue pada class AbstarcClass ? Jelaskan! 
  2. Kembalikan program seperti semula,jelaskan error apa yang terjadi apabila method getValue() pada class ConcrateClass1 diapus ?
  3. Kembalikan program seperti semula, selanjutnya perhatikan hak akses method getValue() di child class ConcreteClass1 dan ConcreteClass2! Jelaskan apa maksutnya?
  4. Buatlah abstract method yang bernama getValue2 pada class ConcreteClass1 ! Compile dan mengapa terjadi error?
  5. Ikuti soal nomer 4. Silahkan ubah class ConcreteClass1 menjadi abstract. Selanjutnya jelaskan mengapa terjadi error?
  6. Dengan mengikuti struktur kode program diatas serta ditambahkan satu abstract method bernama "gabung" TANPA PARAMETER pada parent class. hasilkan output berikut!!



Tatank



Mr.Tatank



Mr.Tatank hobi meloncat



Kells

Mrs.Kells

Mrs.Kells hobi melet



Jawaban pengamatan 1 



  1. Tidak bisa, karena abstract method tidak boleh memiliki body//{}
  2. Error terjadi karena tidak adanya anak class atau induk meminta body disikian pada anak class
  3. Perbedaan hak akses dimana method getValue() pada ConcreteClass1 mengembalikan nilai berupa "ConcreateClass1" sedangkan getValue() pada ConcreteClass2 mengembalikan nilai berupa "ConcrateCkass2".
  4. Error karena tidak adanya body method
  5. Karena ketika ConcreteClass 1 diubah makan akan terjadi error karena abstarct class itu tidak boleh ada object yang dibuat. 
  6.  








Interface






Soal pengamatan 2


  1. Compile kode program diatas dan jelaskan sebab error yang terjadi!
  2. Tambahkan method yang diperlukan untuk mengatasi error yang terjadi (No.1)!
  3. Perhatikan soal 1 (abstract dan soal 2 ini (interface) dan lakukan poin-poin berikut:
  • Apa yang terjadu apabila ditambahkan method biasa yang mengandung body "{}" pada interface Mobil? Jelaskan !
  • Jelaskan perbedaan body program antara class abstract dan interface!
  • Jelaskan perbedaan penggunaan extends antara soal 1 dan soal 2!

    Jawaban pengamatan 2




    1. Error karena di class Mobil2 tidak ada Override  yang ada get dan set void dan bukan class abstract karna dia masuk ke class interface.
    2. Sudah, bisa dilihat pada codingan diatas

    • Program akan error karena di class interface tidak diperbolehkan memakai methode biasa, harus menggunakan method abstract.
    • body program abstract extends, sedangkan body program Interface Implements.
    • Penggunaan extends pada soal no 1 menunjukkan kalau terdapat child milik class abstract dan pada no 2 menunjukkan child milik interface tersebut.

    No comments:

    Post a Comment

    Efek Blog