A.
Definisi
Interface
Interface adalah wadah dari
kumpulan method yang bersifat abstrak atau tidak memiliki implementasi. Sedangkan method yang didefinisikan di dalam interface tersebut akan diimplementasikan
oleh class yang mengimplementasikan interface tersebut. Interface merupakan
bentuk perluasan dari kelas abstrak. Selain method, interface juga dapat berisi sekumpulan variable, namun variable
yang dideklarasikan di dalam interface
harus bersifat final (nilainya tidak
dapat diubah /konstan).
Sebagai
contoh : Dalam kehidupan nyata dapat diketahui ada manusia yang bekerja sebagai
tentara, penyanyi, pengacara, dan sebagainya, tentunya manusia-manusia tersebut
selain harus memiliki method standard sebagai seorang manusia, juga harus
memiliki method yang sesuai dengan pekerjaannya. Dengan demikian untuk membuat
objek manusia yang bekerja sebagai penyanyi, harus dibuat kelas yang merupakan
turunan kelas manusia yang meng-implementasikan interface penyanyi.
Ciri-ciri dari interface
Method
interface tidak punya tubuh, sebuah interface hanya dapat mendefinisikan
konstanta dan interface tidak
langsung mewariskan hubungan dengan class istimewa lainnya, mereka
didefinisikan secara independent.
Tidak bisa membuat instance atau
objek baru dari sebuah interface.
Ciri umum lain adalah baik interface maupun class dapat
mendefinisikan method. Bagaimanapun, sebuah interface
tidak punya sebuah kode implementasi sedangkan class memiliki salah satunya.
Beberapa
perbedaan Interface dan Abstract Class :
- Interface hanya bisa
mendefinisikan Method, tidak
bisa mengimplementasikan, sedangkan Abstrat
Class bisa
mengimplementasikan Method
- Interface tidak boleh terdiri dari field atau property, Abstract Class bias
- Interface tidak boleh terdiri dari
konstruktor dan destruktor, sedangkan Abstract
class bisa:
Abstract class
|
Interface
|
Bisa berisi abstract dan
non-abstract method.
|
Hanya boleh berisi abstract
method.
|
Kita harus menuliskan sendiri
modifiernya.
|
Kita tidak perlu susah2 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 bersifatpublic, static dan final.
|
Method boleh bersifat static.
|
Method tidak boleh bersifat static.
|
Method 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.
|
Abstract Class dikatakan Abstract karena class tersebut tidak diimplementasikan secara
langsung di class tersebut. Melainkan diimplementasikan di class lain yang
merupakan class anak dari abstract class itu. Itulah sebabnya dinamakan abstract class. Berikut perbedaan antara
class abstract dengan interface:
1. Abstract class dapat memiliki tipe
data dengan semua tipe data, sedangkan interface tipe datanya hanya berupa
konstanta
2. Method pada abstract class dapat
berupa method kongkrit dan method
abstract. Sedangkan pada interface semua method harus berupa method
abstract.
3. Interface
Class jelas
berbeda dengan abstract class. Karena class ini mengimplementasikan methodnya
di class lain dihubungkan dengan kata "implements". Method class
interface tadi diimplementasikan dengan nama method yang sama di class yang
diimplementasikan.
public abstract class MahlukHidup {
protected boolean BisaTerbang = false;
protected String Nama;
abstract void bernafas ( ) ;
Dari contoh di atas dapat
kita lihat bahwa pada abstract class
Mahluk hidup terdapat 1 method yang tidak memiliki implementasi. Implementasi
method bernafas nanti akan diimplementasikan di class anak karena biasanya class abstract dapat menjadi class
induk.
Contoh Interface Class :
Contoh Interface Class :
interface Pekerjaan {
public void namaPekerjaan ( ) ;
Pada contoh interface class di atas dapat dilihat perbedaan antara abstract class dan interface class. Interface
class memiliki method yang tidak memiliki implementasi.
A.
Mendeklarasikan
Interface
Untuk mendeklarasikan sebuah interface,
digunakan kata kunci interface sebelum nama interface sebagaimana sintak
pendeklarasian di bawah ini.
public interface
NamaInterface {
// metode -tanpa implementasi
//definisi konstata
}
Variabel dalam interface hanya
diperkenankan untuk menggunakan penentu akses public static final, yang sebenarnya
menyatakan suatu konstata (bukan variable). Kalau public static tidak disertakan, secara
implisit akan diperlakukan seperti public
static telah diberikan.
Contoh berikut ini yang menunjukan
interface yang berisi konstata ;
public interface InterfaceWarna
{
public static int HITAM
= 255;
public static int PUTIH
= 0;
}
Mengingat
public
static dalam interface tidak harus disedutkan secara explisit, deklarasi interface Warna
diatas dapat ditulis menjadi :
public interface InterfaceWarna
{
int HITAM = 255;
int PUTIH = 0;
}
Adapun penentu akses untuk dalam interface dengan metode yang bertipe abstract. Penentu ini harus dituliskan
secara explisit karena java akan
menggunakan penentu tersevut yang sekirannya tidak disebutkan.
Contoh interface yang mengandung metode
tanpa konstata :
public interface
InterfaceWarna {
public abstract void
gambar ( );
public abstract void setWarna
( );
}
Perhatika
bahwa tubuh metode gambar ( ) dan setWarna ( ) tidak ada, karena hanya
menyertakan bentuk metode.
Mengingat
public abstract tidak diharuskan untuk ditulis maka deklarasi interface diatas
dapat ditulis menjadi :
public interface
InterfaceBentuk {
void gambar ( );
void setWarna ( );
}
A.
Pewarisan
Interface
Suatu interface juga dapat mewarisi
interface yang lain seperti subkelas
diatas yang dapat ditulis menjadi :
public interface
WarnaLebihLengkap extends InterfaceWarna {
int ABU_ABU = 128;
}
Pada contoh diatas
interface WarnaLebihLengkap tidak
hanya memiliki konstata ABU_ABU saja, tetapi juga terdapat HITAM dan PUTIH yang
diwarisinya dari interface InterfaceWarna.
Berbeda denga kelas
lain jika suatu interface dapat mewarisi lebih dari satu interface. Untuk
contohnya seperti dibawah ini :
public interface NamaInterface
extends InterfaceA, InterfaceB{
// tubuh interface
}
A.
Menggunakan
Interface
Sebuah
kelas dapat menggunakan interface melalui kata kunci implements. Bentuknya
sebagai berikut :
class
NamaKelas1 [ extends NamaKelas2]
implements NamaInterface1 [,NamaInterface2] {
// tubuh kelas
}
Jika interface yang digunakan lenih dari satu maka
antar interface dipisahkan oleh tanda koma (,).
A.
Contoh
Program yang menggunakan interface
Study
Case : Hewan yang mewarisi data kepada
burung merpati dan kucing, yang diwarisi adalah bernafas, terbang, bersuara dan
berlari.
1. Buat
class dengan nama nafas
2. Buat
class dengan nama terbang
3. Buat
class dengan nama suara
4. Buat
class dengan nama lari
5. Buat
class hewan yang berfungsi sebagai class yang mewarisi
6. Buat class burung
merpati yang akan mewarisi class hewan
7.
Buat class kucing yang akan mewarisi
class hewan
8. Tuliskan
code berikut di class main menu ( Contoh_Interface ) untuk memanggil seluruh
class pewarisan
Hasil Outputnya
Penjelasan :
Pada program diatas
terdapat 4 buah interface yaitu nafas, terbang, suara dan lari. Kemudian class
hewan mewarisi data kepada class burungMerpati dan class kucing. Class hewan sebagai
yang mewarisi data untuk class BurungMerpati dan kucing dan untuk menuliskan
pewarisan terebut menggunakan extends kemudian implements contohnya :
Fungsi dari extends sendiri adalah untuk memanggil
data yang ada pada class hewan. Sedangkan fungsi dari Implements yaitu sama
memanggil data yang ada di class hewan dan jika dalam fungsi Implements tidak
dicantumkan nama data pewarisan sedangkan class BurungMerpati dan kucing tidak
mewarisi data tersebut maka dalam outputnya muncul tidak mewarisi data itu.
KESIMPULAN
Interface merupakan
class yang hanya berisi deklarasi method tanpa memiliki implementasi dan semua
property yang dimilikiny bersifat final. Interface mirip dengan class abstract,
tetapi interface tidak terkait dengan class hierarki. Interface mendefinisikan
sebuah (signature) dari sekumpulan method tanpa tubuh.
Daftar Pustaka ;
Kadir, Abdul. 2005. Dasar Pemrograman Java 2. Yogyakarta :
C.V Andi Offset.
Dwi,
Dinar. 2014. Class abstract, Package,
Interface, Pewarisan, Interface Pada Java. //dinardc.blogspot.co.id/2014/03/class-abstractpackage-interface.html.
Diakses 29 April 2016.