INTERFACE
Interface merupakan fasilitas dari Java yang berfungsi sebagai penghubung berbagai jenis data base dengan gaya pemrograman yang berbeda.
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 – from.
Untuk memahami lebih mudah, interface sekumpulan dari method-method yang dibuat tapi belum ada operasi di dalam tubuh method tersebut, interface ini bisa diturunkan atau diwariskan kepada class yang ingin memakai method yang ada dalam masing-masing interface tersebut dengan keyword extends [interface yang didefinisikan]. Dan juga sebuah class mengimplementasi 1 interface yang sudah dibuat dengan keyword implements.
Iterface lebih mempermudah sistem analyst dalam membuat konsep aplikasi, interface mirip dengan pola atau bisa juga disebut cetak biru aplikasi. Cara kerjanya adalah berdasarkan prinsip semua proses yang ada di java harus menggunakan object variabel dari java, jadi yang dikenal adalah object java bukan dari luar, misalnya seperti kita ketahui sql command akan berbeda dari database yang berbeda, bahkan bisa jadi tipe fieldnya juga berbeda. Jadi syarat penggunaan interface harus menyamakan dahulu dengan melakukan Transfer Object(TO).
Interface tidak berisi perintah kepada system untuk melakukan sesuatu, interface hanya memetakan apa yang harus dikirimkan dan apa yang diharapkan untuk dikembalikan dan seperti yang di sampaikan di atas bahwa yang dikirimkan harus dalam bentuk object java begitu pula yang dikembalikannya.
Apabila sebuah class java menggunakan interface maka class tersebut mengimplementasikan interface. Pada saat class mengimplementasikan interface walaupun semua yang ada di interface harus di cantumkan, namun tidak semuanya harus terisi dengan perintah atau
proses. Deklarasi interface harus public, karena memang fungsi class pengguna interface adalah untuk digunakan secara public.
Ciri-ciri dari interface adalah sebagai berikut..
• Method interface tanpa implement, 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.
Berikut contohnya :
interface I1 {
void methodI1(); // public static by default
}
interface I2 extends I1 {
void methodI2(); // public static by default
}
class A1 {
public String methodA1() {
String strA1 = "I am in methodC1 of class A1";
return strA1;
}
public String toString() {
return "toString() method of class A1";
}
}
class B1 extends A1 implements I2 {
public void methodI1() {
System.out.println("I am in methodI1 of class B1");
}
public void methodI2() {
System.out.println("I am in methodI2 of class B1");
}
}
class C1 implements I2 {
public void methodI1() {
System.out.println("I am in methodI1 of class C1");
}
public void methodI2() {
System.out.println("I am in methodI2 of class C1");
}
}
// Note that the class is declared as abstract as it does not
// satisfy the interface contract
abstract class D1 implements I2 {
public void methodI1() {
}
// This class does not implement methodI2() hence declared abstract.
}
public class InterFaceEx {
public static void main(String[] args) {
I1 i1 = new B1();
i1.methodI1(); // OK as methodI1 is present in B1
// i1.methodI2(); Compilation error as methodI2 not present in I1
// Casting to convert the type of the reference from type I1 to type I2
((I2) i1).methodI2();
I2 i2 = new B1();
i2.methodI1(); // OK
i2.methodI2(); // OK
// Does not Compile as methodA1() not present in interface reference I1
// String var = i1.methodA1();
// Hence I1 requires a cast to invoke methodA1
String var2 = ((A1) i1).methodA1();
System.out.println("var2 : " + var2);
String var3 = ((B1) i1).methodA1();
System.out.println("var3 : " + var3);
String var4 = i1.toString();
System.out.println("var4 : " + var4);
String var5 = i2.toString();
System.out.println("var5 : " + var5);
I1 i3 = new C1();
String var6 = i3.toString();
System.out.println("var6 : " + var6); // It prints the Object toString() method
Object o1 = new B1();
// o1.methodI1(); does not compile as Object class does not define
// methodI1()
// To solve the probelm we need to downcast o1 reference. We can do it
// in the following 4 ways
((I1) o1).methodI1(); // 1
((I2) o1).methodI1(); // 2
((B1) o1).methodI1(); // 3
/*
*
* B1 does not have any relationship with C1 except they are "siblings".
*
* Well, you can't cast siblings into one another.
*
*/
// ((C1)o1).methodI1(); Produces a ClassCastException
}
}
Outputnya :
I am in methodI1 of class B1
I am in methodI2 of class B1
I am in methodI1 of class B1
I am in methodI2 of class B1
var2 : I am in methodC1 of class A1
var3 : I am in methodC1 of class A1
var4 : toString() method of class A1
var5 : toString() method of class A1
var6 : C1@190d11
I am in methodI1 of class B1
I am in methodI1 of class B1
I am in methodI1 of class B1
Contoh ke- 2 :
interface IntAC {
public static final int KeadaanHidup=1;
public static final int KeadaanMati=0;
public static final int tempdingin=1;
public static final int temppanas=0;
public abstract void hidupkan();
public abstract void matikan();
public abstract void panaskan();
public abstract void dinginkan();
}
class AC implements IntAC{
int statusAC=0;
int tempAC=0;
public void hidupkan(){
if(this.statusAC == KeadaanMati){
this.statusAC = KeadaanHidup;
System.out.println(“Hidupkan AC! —> AC Hidup”);
}else{
System.out.println(“Hidupkan AC! —> AC Sudah Hidup kok”);
}
}
public void matikan(){
if(this.statusAC == KeadaanHidup ){
this.statusAC = KeadaanMati;
System.out.println(“Matikan AC! —> AC Mati”);
}else{
System.out.println(“Matikan AC! —> AC Sudah Mati Kok”);
}
}
public void panaskan(){
if(this.tempAC == tempdingin){
this.tempAC = temppanas;
System.out.println(“Temperatur Ruangan! —> Ruangan Panas”);
}else{
System.out.println(“Temperatur Ruangan! —> Ruangan Sudah Panas kok”);
}
}
public void dinginkan(){
if(this.tempAC == temppanas ){
this.tempAC = tempdingin;
System.out.println(“Temperatur Ruangan! —> Ruangan Dingin”);
}else{
System.out.println(“Temperatur Ruangan! —> Ruangan Sudah Dingin Kok”);
}
}
}
public class ACBeraksi {
public static void main(String [] args){
AC ACsekarang = new AC();
System.out.println(” Status AC Saat Ini : Mati “);
System.out.println(” Temperatur ruangan Saat Ini : Panas “);
ACsekarang.hidupkan();
ACsekarang.dinginkan();
ACsekarang.matikan();
ACsekarang.panaskan();
ACsekarang.matikan();
ACsekarang.panaskan();
ACsekarang.hidupkan();
ACsekarang.dinginkan();
ACsekarang.hidupkan();
ACsekarang.dinginkan();
}
Tidak ada komentar:
Posting Komentar