OOP - Bedanya Class Abtract dengan Interface
By
Unknown
—
Senin, 02 Desember 2013
—
Pemrograman
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.
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.
- 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