Interface
Tujuan Pengertian Interface Mendeklarasikan Interface Pewarisan Interface Menggunakan Interface
Pengertian Interface Interface merupakan suatu mekanisme yang disediakan oleh java yang memungkinkan berbagi konstanta atau menentukan bentuk metode yang dapat digunakan oleh sejumlah kelas. Beda Interface dan kelas abstrak: Kelas abstrak dapat mengandung metode abstrak maupun metode tidak abstrak, sedangkan interface hanya dapat mengandung metode abstrak Kelas abstrak dapat mendeklarasikan variabel instan, sedangkan interface hanya dapat mendefinisikan konstanta Kelas abstrak digunakan oleh kelas lain melalui pewarisan(via kata kunci extends), sedangkan interface digunakan oleh kelas tidak melalui mekanisme itu
Mendeklarasikan Interface Bentuk pendeklarasian
agar bisa diakses oleh kelas manapun
public interface namainterface { metode tanpa implementasi definisi konstanta }
Variabel dalam interface hanya diperkenankan untuk menggunakan penentu akses public static final. Kalaupun public static final tidak disertakan, secara implisit akan diperlakukan seperti kalau public static final diberikan. public interface warna { public static final int hitam=255; public static final int putih=0; }
Boleh ditulis
public interface warna { int hitam=255; int putih=0; }
public interface bentuk { public abstract void gambar(); public abstract void warna(); } boleh ditulis
public interface bentuk { void gambar(); void warna(); }
Pewarisan Interface public interface warnalagi extends warna { int abu_abu=128; }
Interface warnalagi tidak hanya memiliki konstanta abu-abu tetapi juga hitam dan putih yang diwarisinya dari interface warna
Berbeda dengan kelas, suatu interface dapat mewarisi lebih dari sebuah interface. Bentuknya seperti berikut: public interface namainterface extends interfaceA, interfaceB { //tubuh interface }
Menggunakan Interface Sebuah kelas dapat menggunakan interface melalui kata kunci implements. Bentuknya seperti berikut: class namakelas1 extends namakelas implements interface1, interface2 { //tubuh kelas }
<
> flyer + takeOff() + land() + fly()
airplane + takeOff() + land() + fly()
interface flyer { public void takeOff(); public void land(); public void fly(); } class airplane implements flyer { public void takeOff() { System.out.println(“takeoff”); } public void land() { System.out.println(“mendarat”); } public void fly() { System.out.println(“terbang”); } }
public class tes { public static void main(String args[]) { airplane obj=new airplane(); obj.takeOff(); obj.land(); obj.fly(); } } Hasil : takeoff mendarat terbang
Beberapa Implementasi interface Flyer B <> flyer + takeOff() + land() + fly()
Airplane + takeOff() + land() + fly()
Bird + takeOff() + land() + fly() + buildNest() + layEggs()
Superman + takeOff() + land() + fly() + leapBuilding () + stopBullet()
Gabungan Inheritance dan Implementation <> flyer
Vehicle
+ takeOff() + land() + fly()
Animal + eat()
HomoSapien Airplane + takeOff() + land() + fly()
Bird + takeOff() + land() + fly() + buildNest() + layEggs() + eat()
Superman + takeOff() + land() + fly() + leapBuilding () + stopBullet() + eat()
Airplane adalah Vehicle Bird adalah Animal Superman adalah Animal dan HomoSapien Kelemahan multiple inheritance adalah suatu class bisa mewarisi method dari lebih dari satu class dimana method ini tidak diharapkan. Dengan Interface maka hal ini bisa dihindari.
Multiple Interface <> Sailer
<> flyer
+ dock() + cruise()
+ takeOff() + land() + fly()
Vehicle
RiverBarge + dock() + cruise()
SeaPlane + dock() + cruise()
Airplane
+ takeOff() + land() + fly()
Helicopter
Contoh :
<> AlatMusik void mainkan() void setelNada() String ambilNama()
implements AlatMusikPetik String nama
AlatMusikTiup String nama
AlatMusikPukul String nama
void mainkan() void setelNada() String ambilNama()
void mainkan() void setelNada() String ambilNama()
void mainkan() void setelNada() String ambilNama()
extends Gitar String nama Gitar(String nama) void mainkan() void setelNada() String ambilNama()
Bass String nama Bass(String nama) void mainkan() void setelNada() String ambilNama()
interface AlatMusik{ void mainkan(); void setelNada(); String ambilNama(); } class AlatMusikPetik implements AlatMusik { protected String nama; public void mainkan(){ System.out.println(ambilNama()+“ dimainkan dengan cara petik”); } public void setelNada(){ System.out.println(“Setel nada pada” + ambilNama()); } public String ambilNama() { return nama; } } class AlatMusikTiup implements AlatMusik { protected String nama; public void mainkan(){ System.out.println(ambilNama()+“ dimainkan dengan cara tiup”); }
public void setelNada(){ System.out.println(“Setel nada pada “+ ambilNama()); } public String ambilNama() { return nama; } } class AlatMusikPukul implements AlatMusik { protected String nama; public void mainkan(){ System.out.println(ambilNama()+“ dimainkan dengan cara pukul”); } public void setelNada(){ System.out.println(“Setel nada pada “+ ambilNama()); } public String ambilNama() { return nama; } }
class Gitar extends AlatMusikPetik{ Gitar(String nama) { this.nama = nama; } } class Bass extends AlatMusikPetik{ Bass(String nama) { this.nama = nama; } }
class DemoInterface{ public static void main(String[] args){ AlatMusikPetik gitar, bass; gitar = new Gitar(“Gitar”); bass = new Bass(“Bass”); gitar.mainkan(); gitar.setelNada(); System.out.println(); bass.mainkan(); bass.setelNada(); } }