Abstract Class dan Interface


Iseng ngeliat forum  di Indonesia yang udah terkenal geellaaa,,punya anak bangsa KASKUS,,yeahhhh😀

Ngebahas tentang Abstract class dan Interface.. Cekidot :

1. kapan saya harus menggunakan extends atau interface?
2. gimana perbedaan karakteristik subclass yang meng-extends dengan yang meng-implement interface

Jawaban :

pertanyaan bagus … langsung nonjok ke OO conceptnya…
blajar core java kalo dah bisa C/VB.. mungkin sminggu juga cukup.. tapi gimana blajar OO-nya.. sminggu mungkin tau teorinya.. tapi pas praktek… hehehehe.. pastinya bakal ngebolak balik tuh buku n tutorial lagi.. tapi kalo dah sampe sini.. bisa dibilang welcome to java .. and later on.. java ga cuman programming language… tapi sebuah platform .. welcome in a world dimana smuanya ditulis dengan java…

dan balik ke pertanyaannya…
1. untuk kasus Mobil dan Oplet
Mobil cocok buat jadi interface dan oplet cocok buat jadi realisasi (class yang meng-implement) dari Mobil..
kenapa?
Interface bisa dibilang sesuatu yang generic yang berisi kontrak yang dimiliki oleh suatu objek.. misalnya… untuk kasus Mobil
smua mobil bisa ganti gigi
smua mobil bisa distater
smua mobil bisa dimatiin mesinnya
dan smua2 yang laen yang merupakan behaviour dari Mobil
jadi Mobil meng-cover smua generic behaviour..

Oplet sebagaimana Sedan mempunyai semua properti2 mobil karena ntu Oplet dan Sedan dua2nya implements Mobil..

pertanyaan selanjutnya.. knapa ga dibikin class Mobil aja trus Oplet dan Sedan tinggal extends Mobil…
mungkin ga salah juga… tapi mari kita lihat dimana polymorphism memegang peranan
tadi diatas dibahas kalo Oplet dan Sedan sama2 bisa ganti gigi…
pertanyaannya.. apakah cara ganti giginya sama?
jawabannya belum tentu… Sedan ada yang model matic [gua ga tau cara ganti giginya Oplet gimana😛 ].. tapi yang pasti cara ganti giginya belom tentu sama…

nah disini makanya kita pake model interface di Mobil sehingga di class yang meng-implement spreti Sedan dan Oplet kita bisa bikin implementasi yang spesifik.. tapi keduanya tetep mengikuti kontrak yang udah disepakati di Mobil.. yaitu ganti gigi

kalo pake analogi Binatang (interface).. cara larinya Zebra (class) dan Ayam (class) dah pasti beda.. cuman dua2nya sama2 binatang dan duanya sama2 bisa lari…

pertanyaan kedua..
mungkin sbelomnya ada juga pertanyaan.. “trus kapan donk pake inheritance (extends)?”
secara gamblang inheritance adalah turunan.. dimana si anak punya behaviour dari si parent.. definisinya se kliatannya mudah.. cuman kapan dipake.. trus apa maxud sbenernya…

kalo pake definisi bebas gua (sori yak.. ni maxudnya biar gampang aja).. inheritance dipake kalo kita butuh versi yang lebih spesifik dari class yang kita punya…
ambil Contoh.. Mobil

kita punya Mobil, which is an interface..
trus kita punya Sedan, Oplet which is a class.. misalkan kita tambah satu lagi.. Bus, yang notabene juga Mobil.. trus kita mo tipe Bus yang spesifik.. tarolah Bussway dengan behaviour tambahannya seperti bukaPintuPenumpangSebelahKanan() ato bunyikanPengumumanHalte()

disini kita mau Bussway, yang juga adalah Bus tapi dengan tambahan spesifiknya dia (spesialisasi).. dan jadilah dia extends Bus

konsep dasar OO.. sperti encapsulation, inheritance, dan polymorphism is really2 nice..

and satu lagi.. dalam mendesain bukan masalah benar atau salah.. cuman aja kadang satu desain lebih bagus dari yang lainnya… sperti kata bang napi.. “banyak jalan ke roma..”

(Itu jawaban dari Agan box)

————————————————-

Mudah – mudahan ada pencerahan dikit deh,maklum nubie juga nie😀

Ganbate \m/

sumber : kaskus.us

HOME / LOEKELOE / COMPUTER STUFF / Programmer Forum
[ask][java] kepingin blajar java dari A-Z page 3-5

Regrads,

Idham RJ

One Response to “Abstract Class dan Interface”

  1. Zia Al Attar Says:

    Haahaha…ane suka analoginya, sangat mengena n mudah dipahami.


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: