Kamis, 16 Desember 2010

INTERFACE

0

Interface adalah semacam blok spesial yang hanya berisi tanda tangan method (dan mungkin konstan).
Menggambarkan tandatangan dari seperangkat method, tanpa body
Menggambarkan cara standard dan publik penetapan behavior class
Mengijinkan class,dengan mengabaikan lokasi mereka di dalam hirarki class untuk menerapkan behavior.
CATATAN: Interface memperlihatkan polymorphism juga, sejak program diperbolehkan memanggil sebuah method interface, dan versi yang sesuai dari method tersebut akan dieksekusi tergantung pada jenis object yang dilewatkan kepada pemanggilan method interface


Mengapa menggunakan interface?
a. Untuk memiliki class yang tidak berhubungan yang mengimplementasikan method yang sama.
Contoh:
    Class Line dan MyInteger
    1. Tidak berhubungan
    2. Keduanya mengimplementasikan method perbandingan

  • isGreater
  • isLess
  • isEqual
b. Untuk mengungkapkan sebuah interface pemrograman object tanpa pernyataan classnya
c. Untuk model multi inheritance yang mengijinkan sebuah class untuk memiliki lebih dari satu superclass.

Membuat interface

Sebagai contoh, mari buat sebuah interface yang mendefinisikan hubungan antara dua object sesuai dengan pesanan dari object.
public interface Relation
{
public boolean isGreater( Object a, Object b);
public boolean isLess( Object a, Object b);
public boolean isEqual( Object a, Object b);
}

Untuk menggunakan interface, kita gunakan keyword implements
Sebagai contoh,
/**
 * Class ini menjelaskan segment garis
 */
public class Line implements Relation {
    private double x1;
    private double x2;
    private double y1;
    private double y2;
public Line(double x1, double x2, double y1, double y2){
        this.x1 = x1;   
        this.x2 = x2;   
        this.y1 = y1;       
        this.y2 = y2;   
    }
public double getLength(){
        double length = Math.sqrt((x2-x1)*(x2-x1) +
                        (y2-y1)* (y2-y1));   
        return length;
    }
   
    public boolean isGreater( Object a, Object b){
        double aLen = ((Line)a).getLength();
        double bLen = ((Line)b).getLength();
        return (aLen > bLen);
    }
   
    public boolean isLess( Object a, Object b){
        double aLen = ((Line)a).getLength();
        double bLen = ((Line)b).getLength();
        return (aLen < bLen);
       
    }
   
    public boolean isEqual( Object a, Object b){
        double aLen = ((Line)a).getLength();
        double bLen = ((Line)b).getLength();
        return (aLen == bLen);
    }       
}
Ketika class Anda mencoba untuk mengimplementasikan sebuah interface, pastikan selalu bahwa Anda mengimplementasikan semua method dari interface tersebut, jika tidak, Anda akan mendapatkan kesalahan ini.

Line.java:4: Line is not abstract and does not override abstract method isGreater(java.lang.Object,java.lang.Object) in Relation
public class Line implements Relation
       ^
1 error


Interface vs. Abstract Class

  1. Semua interface method tidak memiliki body
  2. Beberapa Abstract class memiliki method dengan implementasi
  3. Sebuah interface hanya dapat didefinisikan constant
  4. Sebuah abstract class tampak seperti class biasa yang dapat mendeklarasikan variabel.
  5. Interface tidak memiliki hubungan inheritance secara langsung dengan setiap class tertentu, mereka didefinisikan secara independen.
  6. Abstract class dapat di-subclass-kan
Interface vs. Class

Persamaan:
Interface dan class adalah sama-sama sebuah type
Hal ini berarti bahwa interface dapat digunakan di tempat dimana sebuah class dapat digunakan
Sebagai contoh:

PersonInterface    pi = new Person();
Person        pc = new Person();


Perbedaan:
Anda tidak dapat membuat instance dari sebuah interface
Sebagai contoh:

PersonInterface    pi = new PersonInterface(); //ERROR!

Persamaan:
Interface dan class, keduanya dapat mendefinisikan method

Perbedaan:
Interface tidak memiliki segala implementasi dari method


Meng-extends Class vs. Implementasi interface

Sebuah class hanya bisa meng-EXTENDS SATU superclass, tetapi juga bisa meng-IMPLEMENTASIKAN BANYAK interface
Sebagai contoh:
public class Person implements PersonInterface,
                    LivingThing,
                    WhateverInterface {

    //beberapa kode disini
}

Contoh lain:
public class ComputerScienceStudent extends Student
                    implements PersonInterface,
                             LivingThing {

    //Beberapa kode disini
}

Inheritance antar interface

Interface bukanlah bagian dari hirarki class, bagaimanapun juga interface dapat memiliki hubungan inheritance antar mereka sendiri
Sebagai contoh:
public interface PersonInterface {
    . . .
}

public interface StudentInterface extends PersonInterface {
    . . .
}

0 komentar:

Posting Komentar

 
Design by ThemeShift | Bloggerized by Lasantha - Free Blogger Templates | Best Web Hosting