unisbadri.com » Python Java Golang Typescript Kotlin Ruby Rust Dart PHP
Interface

Interface #

Interface dalam pemrograman Java adalah sebuah kontrak yang mendefinisikan sekumpulan metode abstrak (tanpa implementasi) yang harus diimplementasikan oleh kelas yang “menerapkan” (implement) interface tersebut. Interface memungkinkan Anda untuk menentukan apa yang harus dilakukan oleh suatu kelas, tanpa menentukan bagaimana cara melakukannya. Dengan kata lain, interface menetapkan aturan yang harus diikuti oleh kelas yang mengimplementasikannya.

Konsep Dasar Interface #

  1. Deklarasi Interface: Interface dideklarasikan menggunakan keyword interface. Metode yang didefinisikan dalam interface tidak memiliki badan (body) dan secara default bersifat abstract dan public.

  2. Implementasi Interface: Kelas yang ingin mengimplementasikan interface harus menggunakan keyword implements dan harus menyediakan implementasi untuk semua metode yang didefinisikan dalam interface.

  3. Interface sebagai Tipe Data: Interface dapat digunakan sebagai tipe data. Hal ini memungkinkan Anda untuk mendefinisikan variabel yang dapat diisi dengan objek dari kelas apa pun yang mengimplementasikan interface tersebut.

  4. Multiple Inheritance: Java tidak mendukung multiple inheritance untuk kelas, tetapi sebuah kelas dapat mengimplementasikan beberapa interface, sehingga memungkinkan bentuk lain dari multiple inheritance.

Deklarasi Interface #

Berikut adalah contoh deklarasi sederhana dari sebuah interface:

public interface Hewan {
    void suara(); // Metode abstrak
    void makan(); // Metode abstrak
}

Penjelasan:

  • public interface Hewan: Mendefinisikan sebuah interface bernama Hewan.
  • void suara(); dan void makan();: Mendefinisikan dua metode abstrak yang harus diimplementasikan oleh kelas yang mengimplementasikan interface ini.

Implementasi Interface #

Kelas yang mengimplementasikan interface Hewan harus menyediakan implementasi untuk semua metode yang didefinisikan oleh interface:

public class Kucing implements Hewan {
    public void suara() {
        System.out.println("Meong");
    }

    public void makan() {
        System.out.println("Kucing makan ikan.");
    }
}

public class Anjing implements Hewan {
    public void suara() {
        System.out.println("Guk guk");
    }

    public void makan() {
        System.out.println("Anjing makan tulang.");
    }
}

Penjelasan:

  • public class Kucing implements Hewan: Kelas Kucing mengimplementasikan interface Hewan.
  • public void suara() dan public void makan(): Kelas Kucing memberikan implementasi spesifik untuk metode suara dan makan dari interface Hewan.
  • Kelas Anjing juga mengimplementasikan Hewan dengan cara yang berbeda, menunjukkan bagaimana interface dapat digunakan untuk memaksa konsistensi dalam berbagai kelas.

Interface sebagai Tipe Data #

Anda dapat menggunakan interface sebagai tipe data, yang memungkinkan polimorfisme. Dengan cara ini, Anda dapat menyimpan objek dari kelas apa pun yang mengimplementasikan interface tersebut dalam variabel yang bertipe interface.

public class ContohInterface {
    public static void main(String[] args) {
        Hewan kucing = new Kucing(); // Interface digunakan sebagai tipe data
        Hewan anjing = new Anjing();

        kucing.suara(); // Output: Meong
        kucing.makan(); // Output: Kucing makan ikan.

        anjing.suara(); // Output: Guk guk
        anjing.makan(); // Output: Anjing makan tulang.
    }
}

Penjelasan:

  • Hewan kucing = new Kucing();: Variabel kucing bertipe Hewan, tetapi diisi dengan objek dari kelas Kucing.
  • Hal yang sama berlaku untuk anjing, yang diisi dengan objek dari kelas Anjing.
  • Anda dapat memanggil metode suara dan makan pada objek tersebut, dan implementasi spesifik dari metode yang sesuai dengan tipe objek akan dijalankan.

Multiple Interface #

Java tidak mendukung multiple inheritance dengan kelas, tetapi sebuah kelas dapat mengimplementasikan lebih dari satu interface. Ini memungkinkan satu kelas untuk mengikuti beberapa kontrak.

public interface Terbang {
    void terbang();
}

public interface Berjalan {
    void berjalan();
}

public class Burung implements Terbang, Berjalan {
    public void terbang() {
        System.out.println("Burung terbang di angkasa.");
    }

    public void berjalan() {
        System.out.println("Burung berjalan di tanah.");
    }
}

Penjelasan:

  • public interface Terbang dan public interface Berjalan: Dua interface yang mendefinisikan metode terbang dan berjalan.
  • public class Burung implements Terbang, Berjalan: Kelas Burung mengimplementasikan kedua interface, sehingga harus menyediakan implementasi untuk semua metode yang didefinisikan dalam kedua interface.

Default Methods dalam Interface #

Sejak Java 8, interface dapat memiliki metode dengan implementasi default. Ini memungkinkan Anda untuk menambahkan metode baru ke interface yang sudah ada tanpa memaksa semua kelas yang mengimplementasikan interface tersebut untuk mengubah kode mereka.

public interface Hewan {
    void suara();
    void makan();

    default void tidur() {
        System.out.println("Hewan tidur.");
    }
}

public class Kucing implements Hewan {
    public void suara() {
        System.out.println("Meong");
    }

    public void makan() {
        System.out.println("Kucing makan ikan.");
    }
}

public class Anjing implements Hewan {
    public void suara() {
        System.out.println("Guk guk");
    }

    public void makan() {
        System.out.println("Anjing makan tulang.");
    }
}

public class ContohDefaultMethod {
    public static void main(String[] args) {
        Hewan kucing = new Kucing();
        kucing.tidur(); // Output: Hewan tidur.

        Hewan anjing = new Anjing();
        anjing.tidur(); // Output: Hewan tidur.
    }
}

Penjelasan:

  • default void tidur(): Metode default yang menyediakan implementasi di dalam interface Hewan.
  • Kelas Kucing dan Anjing dapat menggunakan metode default ini tanpa harus mengimplementasikannya sendiri, tetapi mereka juga bisa meng-override metode ini jika dibutuhkan.

Kesimpulan #

Interface dalam Java adalah alat yang sangat kuat untuk mendefinisikan kontrak atau aturan yang harus diikuti oleh kelas yang mengimplementasikannya. Interface memungkinkan Anda untuk mencapai polimorfisme, memisahkan implementasi dari definisi, dan mendukung multiple inheritance melalui implementasi beberapa interface. Dengan fitur tambahan seperti metode default, interface menjadi lebih fleksibel dan memungkinkan evolusi API tanpa memengaruhi kode yang sudah ada.

« Kelas
Eksepsi »