OOP - Bedanya Class Abtract dengan Interface - nblognlife

OOP - Bedanya Class Abtract dengan Interface

Abstract class adalah sebuah class setengah jadi (abstrak) yang memuat/memiliki method dan atrribut. Abstract class sebenarnya adalah sebuah class, sehingga memiliki semua sifat dari class biasa (punya konstruktor). Hanya saja sifatnya masih abstrak, karena itu biasanya method kosong/belum di implementasikan.
Namun Abstract class dapat mengimplementasikan method tersebut. Abstract class akan selalu menjadi superclass / hirarki tertinggi dari subclass-subclass-nya.

Sedangkan interface:
- Adalah sebuah blok signature kumpulan method tanpa tubuh (konstan).
- Sebuah definisi method yang umum/general yang dapat menghubungkan class-class yang berbeda.
Dengan kata lain, interface memungkinkan kita mengimplementasikan method yang sama terhadap class yang tidak ada hubungan sama sekali (tidak dalam satu hirarki)
- Oleh karena itu interface bukanlah sebuah class, walaupun memiliki ciri yang serupa dengan abstract class.

Berikut ini adalah perbedaan abstract class dan interface di Java.

Abstract Class
Interface
Bisa berisi abstract dan non-abstract method.
Hanya boleh berisi abstract method.
Modifiersnya harus dituliskan sendiri.
Tidak perlu menulis public abstract di depan nama method. Karena secara implisit, modifier untuk method di interface adalah public dan abstract.
Bisa mendeklarasikan constant dan instance variable.
Hanya bisa mendeklarasikan constant.  Secara implisit variable yang dideklarasikan di interface bersifat public, static dan final.
Method boleh bersifat static.
Method tidak boleh bersifat static
Met hod 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.


Sebuah analogi yang bagus :
- Abstract class adalah mobil, kapal, pesawat class nya adalah Sedan, SUV, MPV, Sports, dll  (untuk mobil)
- Interface adalah Kendaraan darat, kendaraan laut, kendaraan udara.
interface ini memiliki method-method/fungsi-fungsi umum ketiga jenis kendaraan tersebut, yang masing-masing fungsinya harus didefinisikan di class-class yang spesifik.

Pesan singkat:
Gunakan interface untuk mendefinisikan method standar yang sama dalam class-class yang berbeda. Sekali kita telah membuat kumpulan definisi method standar(abstrak), kita dapat menulis method tunggal(spesifik) untuk memanipulasi semua class-class yang mengimplementasikan interface tsb.
Gunakan class abstract untuk mendefinisikan secara luas sifat-sifat dari class tertinggi pada hirarki OOP, dan gunakan subclassnya (turunannya/child class) untuk melengkapi deskripsi method dari class abstract.

[RS]

Klik Like & Share jika postingan ini bermanfaat
Apa tanggapan Anda?

Berikan tanggapan Anda melalui kolom komentar yang telah disediakan.
- Gunakan bahasa yang sopan;
- Saat menjadikan postingan pada blog ini sebagai referensi, jangan lupa mencantumkan sumbernya (link dari blog ini).

Jika blog ini bermanfaat jangan lupa memberikan 'like' atau 'share' untuk mendapatkan update terbaru.

Terima kasih