Sabtu, 02 April 2016

Perbedaan Antara Abstract Class dan Interface

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