Perbandingan Abstract Class dan Interface



1.                Abstract Class
Abstract class adalah kelas murni (tanpa objek) dan tidak boleh memiliki objek (tidak boleh ada instansiasi) serta method-method yang abstract harus disempurna-kan oleh kelas turunannya melalui override.
Suatu kelas dapat diinstansiasi menjadi objek, misal kelas Dosen dapat diinstansiasi menjadi budi, heri, heru, namun tidak mungkin dapat menginstansiasi kelas MahlukHidup, kelas Hewan, dan kelas Manusia, sebab kelas tersebut terlalu umum (abstract), kelas seperti inilah yang disebut kelas abstract. Dibutuhkan kelas turunan yang lebih khusus.

Bentuk umum :
[modifier] abstract class NamaKelas {
    // deklarasi attribute
    // definisi/prototype method
}

2.                Interface
Interface adalah kelas yang paling abstract, yang berisi daftar deklarasi method (seluruh method belum memiliki implementasi).
Interface dapat dianalogikan sebagai kontrak yang dapat dipakai oleh setiap kelas. 
Deklarasi Interface
Bentuk umum deklarasi:
[modifier] interface NamaInterface {
    // deklarasi konstanta
    // deklarasi method
}  // catatan : modifier static tidak boleh digunakan dalam interface

Bentuk umum implementasi :
[modifier] class NamaKelas implements NamaInterface {
    // penggunaan konstanta
    // implementasi method
}

3.                Interface vs Abstract Class
Interface dan kelas abstract memilki kesamaan sama-sama tidak boleh instansiasi objek.
Perbedaan interface dangan kelas abstract adalah sebagai berikut :
komponen
interface
abstract class
attribute
hanya berupa konstanta
bebas memilki tipe data apa saja
method
berupa deklarasi
boleh deklarasi, boleh berupa method lengkap
syntax
seluruhnya abstract (berupa deklarasi)
sebagian abstract

Komentar