Interface adalah jenis khusus dari blok yang hanya berisi method signature(atau constant
). Interface mendefinisikan sebuah(signature) dari sebuah kumpulan method tanpa tubuh.
Interface mendefinisikan sebuah cara standar dan umum dalam menetapkan sifat-sifat dari
class-class.
Mereka menyediakan class-class, tanpa memperhatikan lokasinya dalam
hirarki class, untuk mengimplementasikan sifat-sifat yang umum.
Dengan
catatan bahwa interface-interface juga menunjukkan polimorfisme,
dikarenakan program dapat memanggil method interface dan versi yang
tepat dari method yang akan dieksekusi tergantung dari tipe object yang
melewati pemanggil method interface.
Kenapa Kita Memakai Interface?
Kita
akan menggunakan interface jika kita ingin class yang tidak berhubungan
mengimplementasikan method yang sama. Melalui interface-interface, kita
dapat menangkap kemiripan diantara class yang tidak berhubungan tanpa
membuatnya seolah - olah class yang berhubungan.
Mari kita ambil contoh class
Line dimana berisi method yang menghitung panjang dari garis dan
membandingkan object Line ke object dari class yang sama. Sekarang,
misalkan kita punya class yang lain yaitu MyInteger dimana berisi method
yang membandingkan object MyInteger ke object dari class yang sama.
Seperti
yang kita lihat disini, kedua class-class mempunyai method yang mirip
dimana membandingkan mereka dari object lain dalam tipe yang sama,
tetapi mereka tidak berhubungan sama sekali. Supaya dapat menjalankan
cara untuk memastikan bahwa dua class-class ini mengimplementasikan
beberapa method dengan tanda yang sama, kita dapat menggunakan sebuah
interface untuk hal ini. Kita dapat membuat sebuah class interface,
katakanlah interface Relation dimana mempunyai deklarasi method
pembanding. Relasi interface dapat dideklarasikan sebagai,
--------------------------------------------------------
public interface Relation
{
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}
--------------------------------------------------------