Interface adalah class yang hanya mengandung deklarasi method tanpa memiliki implementasi dan semua property yang dimilikinya bersifat final. Interface mirip dengan class abstrak, tetapi interface tidak terikat dengan class hierarki.
1. Modifier yang digunakan hanya public atau tidak sama sekali. Jika tidak menggunakan modifier maka interface tersebut hanya dapat diakses dalam package yang sama.
2. Semua variabel yang dideklarasikan dalam interface secara otomatis adalah static final. Karena itu waktu pendeklarasian harus diberikan nilai.
3. Semua method adalah abstrak. Bedanya dengan class abstrak adalah kita tidak perlu menuliskan keyword abstract pada saat mendeklarasikan method dalam interface.
4. Kita dapat mengimplementasikan lebih dari satu interface (multiple inheritance) dengan memisahkan nama dari setiap interface dengan tanda koma.
5. Dapat terjadi saat kita mengimplementasikan lebih dari satu interface ternyata interface – interface tersebut memiliki method yang sama. Dalam hal ini method yang akan diimplementasi adalah method yang berada pada posisi pertama.
6. Semua method yang diimplemetasikan harus public.
7. Jika kita tidak mengimplementasikan semua method yang ada pada interface, maka class tersebut harus dideklarasikan sebagai abstract class.
Untuk lebih jelasnya kita akan mengambil contoh pada dunia nyata. Misalnya pembuat remote control dan pembuat TV. Seorang pembuat remote control tentunya tidak perlu tahu merk TV dan siapa yang membuat TV tersebut untuk dikontrol menggunakan remote control tersebut. Yang perlu diketahui adalah Interface apa yang digunakan oleh TV tersebut agar dapat dikontrol. Demikian pulu si pembuat TV tidak perlu tahu bagaimana remote control tersebut dibuat. Pembuat TV hanya perlu tahu interface apa yang akan digunakan agar Tvnya dapat dikontrol oleh remote control tersebut. Perhatikan implementasinya dalam kode berikut ini.
public interface Control {
public void pindahChannel(int channel);
public void perbesarVolume(int intensitas);
public void perkecilVolume(int intensitas);
}
public class TVPolitron implements Control{
String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"};
public void pindahChannel(int channel) {
System.out.println("Pindah channel pada TV Politron ke "+ this.channel[channel]);
}
public void perbesarVolume(int intensitas) {
System.out.println("Perbesar volume pada TV Politron sebanyak "+ intensitas);
}
public void perkecilVolume(int intensitas) {
System.out.println("Perkecil volume pada TV Politron sebanyak "+ intensitas);
}
}
public class TVSamsung implements Control{
String[] channel = {"RCTI","SCTV","INDOSIAR","ANTV","TV7"};
public void pindahChannel(int channel) {
System.out.println("Pindah channel pada TV Samsung ke "+ this.channel[channel]);
}
public void perbesarVolume(int intensitas) {
System.out.println("Perbesar volume pada TV Samsung sebanyak "+ intensitas);
}
public void perkecilVolume(int intensitas) {
System.out.println("Perkecil volume pada TV Samsung sebanyak "+ intensitas);
}
}
public class RemoteControl {
public void kirimPerintahKeTv(int aksi,Control tv,int tombol){
switch(aksi){
case 1:
tv.pindahChannel(tombol);
break;
case 2:
tv.perbesarVolume(tombol);
break;
case 3:
tv.perkecilVolume(tombol);
break;
}
}
}
public class TestRemoteControl {
public static void main(String[] args){
TVPolitron tvp = new TVPolitron();
TVSamsung tvs = new TVSamsung();
RemoteControl rc = new RemoteControl();
rc.kirimPerintahKeTv(1,tvp,1);
}
0 komentar:
Post a Comment