270 likes | 511 Vues
Kelas Abstrak dan Interface. Kelas Abstrak. Contoh public abstract class Animal { private int numOfFoots ; private Color color ; public abstract void walk(); public abstract void sound(); }. public class Cat extends Animal { public void walk() {
E N D
Contoh public abstract class Animal { private intnumOfFoots; private Color color; public abstract void walk(); public abstract void sound(); }
public class Cat extends Animal { public void walk() { System.out.println("cat walks using 4 legs"); } public void sound() { System.out.println("miaouw"); } }
public class Chicken extends Animal { public void walk() { System.out.println("chicken walks using 2 legs"); } public void sound() { System.out.println("kukuruyuk"); } }
Padakode program diatasdideklarasikankelas Animal yang abstrak, dimanadidalamnyadideklarasikanduavariabelyaitunumOfFootsdan color. Selainitu, jugadideklarasikanduabuahmethod, yaitu walk(), dan sound(). • Methoddidalamkelas Animal tidakdidefiniskanimpelementasimethod, denganharapanbahwaobyekturunanhewan yang spesifik, seperti Chicken dan Cat akanmenyediakanimplementasinya yang spesifikdengankondisimasing-masinghewan.
PadaContohdiatas, methodabstrakwalk() dansound() dalamkelas Animal diimplementasikanolehkelasChickendanCat. • Kelasabstrakjugabolehtidakmemilikimethodabstraksebagaimanaditunjukkanpadacontoh program berikut.
public abstract class Vehicle { private String type; public String getType() { return type; } }
Apabilaadasatusajamethod yang dideklarasikandalamsebuahkelassebagaimethodabstrak, makakelastersebutharusdideklarasikan abstract. • Methodabstrakadalahmethod yang sudahdideklarasikan, tetapibelumdiimplementasikan. Sebuahmethodditulisdengankatakunci abstract ketikakelasturunan (subclass) dibawahnyamenyediakanimplementasimethodtersebut
Methodabstrakditandaidenganmodifierabstract, tidakmemilikiimplementasi, dandiakhiridengantandatitikkoma ( ; ). public abstract void myAbstractMethod();
Interface • Interfacemendefinisikanaturanperilaku (protocol of behavior) yang dapatdiimplementasikanolehkelasmanapun. • Interfacemendefinisikansatu set methodtanpamenyediakanimplementasinya. • Sebuahkelas yang mengimplementasisebuahinterfaceterikatkontrakolehinterfacetersebutuntukmengimplementasisemuamethod yang adadidalaminterface. • Dengankata lain, kelastersebutterikatuntukmeng-implementasikanperilakutertentu yang tertulisdalaminterface. Secarasubstansi, interfacemerupakankumpulandarimethodabstrakdankonstanta.
Interfacememilikikemiripandengankelasabstrak, dimanakeduanyamemuatmethodabstrak. Perbedaanpentingantarainterfacedankelasabstrakadalah : • Sebuahinterfacetidakdapatmembuatimplementasisatumethod pun, sementarakelasabstrakdapatmembuatimplementasisatuataulebih method; • Sebuahkelasdapatmengimplementasibeberapainterface, tetapiiahanyadapatmeng-extendssatusuperclass. • Interfacebukanmerupakanbagiandarihirarkikelas. Duakelas yang tidakberhubungandalamjalurhirarkikelasdapatmengimplementasiinterface yang sama.
Mendeklarasiinterface • Misalkanadasekumpulanobyek yang memilikikemampuan yang sama, yaitumerekasemuadapatterbang. Untukitudapatdibuatkansebuahinterfacepublik, yang dinamakanFlyer, yang memilikitigaoperasitakeOff, land, danfly.
Panahdengangarisputus-putusdiatasmenggambarkankelas Airplane mengimplementasikaninterface Flyer. Kode Java daridisainkelasdiatasditunjukkansebagaiberikut.
public interface Flyer { public void takeOff(); public void land(); public void fly(); }
public class Airplane implements Flyer { public void takeOff() { //accelerate until lift-off //raise landing gear } public void land() { //lower landing gear //decelerate and lower flaps until touch-down //apply breaks } public void fly() { //keep those engines running } }
Satuinterface Flyer dapatdiimplementasikanolehbeberapakelas. Sebagaicontoh, pesawatterbang (Airplane), burung (Bird), dan superman (Superman), semuanyadapatterbang.
Multiple Interface Sepertitelahdijelaskandisebelumnya, sebuahkelasdapatmengimplementasilebihdarisatuinterface. Sebagaicontoh, sebuahSeaPlane(pesawat yang dapatmendaratdanterbangdi/dari air) tidakhanyadapatterbang, iajugadapatberlayar. KelasSeaPlane me-extendskelasAirplanedanmengimplementasiinterfaceFlyer. KelasSeaPlanejugamengimplementasiinterfaceSailer.
Biasanyainterfacedigunakanuntuk: • mendeklarasikanmethod yang akandiimplementasikanolehsatuataubeberapakelas. • menunjukkaninterfacesebuahobyekkepubliktanpamenunjukkanisikelassebenarnya. • menangkapkesamaandiantarabeberapakelastanpaperlumemasukkannyadalamhirarkikelas (superclass - subclass). • mensimulasikankonseppewarisanbanyakkelasdenganmendeklarasikankelas yang mengimplementasikanbeberapainterfacesekaligus.