Pemrograman Berorientasi Objek INTERFACE
PENGERTIAN INTERFACE Interface merupakan suatu mekanisme yang disediakan oleh Java, yang memungkinkan berbagai konstanta atau menentukan bentuk metode yang dapat digunakan oleh sejumlah kelas. Sekilas, interface mirip dengan kelas abstrak, karena kelas abstrak juga menetukan bentuk metode untuk subkelas.
INTERFACE vs ABSTRACT CLASS Kelas abstrak dapat mengandung metode abstrak maupun metode tidak abstrak, sedangakan interface hanya dapat mengandung metode abstrak. Kelas abstrak dapat mendeklarasikan variabel instan, sedangkan interface hanya dapat mendeklarasikan konstanta. Kelas abstrak digunakan oleh kelas lain melalui pewarisan (via kata kunci extends), sedangkan interface digunakan oleh kelas tidak melalui mekanisme itu.
Deklarasi Interface public interface NamaInterface { //metode-tanpa implementasi //definisi konstanta } Variabel dalam interface hanya diperkenankan untuk menggunakan penentu akses public static final (untuk menyatakan suatu konstanta). Public static final tidak harus disebutkan secara eksplisit.
Contoh Interface - Konstanta public interface InterfaceWarna { public static final int HITAM = 255; public static final int PUTIH = 0; } ------------------------------------------------------------------------- int HITAM = 255; int PUTIH = 0;
Contoh Interface - Metode public interface InterfaceBentuk { public abstract void gambar(); public abstract void tentukanWarna(); } ------------------------------------------------------------------------- void gambar(); void tentukanWarna();
Interface Dapat Mewarisi Interface Lain public interface WarnaLebihLengkap extends InterfaceWarna { int ABU_ABU = 128; } Berbeda dengan kelas pada Inheritance, sebuah interface dapat mewarisi lebih dari satu 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 NamaKelas2] implements NamaInterface1 [, NamaInterface2] { //tubuh kelas }