Menu
CoddyTech

Mengimplementasikan Antarmuka

Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 35 dari 87.

Untuk menggunakan interface, sebuah class harus mengimplementasikan interface tersebut dengan menggunakan kata kunci implements. Class tersebut kemudian menyediakan implementasi konkret untuk semua method yang dideklarasikan dalam interface:

public interface Drawable {
    void draw();
}

public class Circle implements Drawable {
    private double radius;
    
    public Circle(double radius) {
        this.radius = radius;
    }
    
    @Override
    public void draw() {
        System.out.println("Drawing a circle with radius " + radius);
    }
}

Jika sebuah class mengimplementasikan interface tetapi tidak menyediakan implementasi untuk semua method-nya, compiler akan menghasilkan error. Anotasi @Override bersifat opsional, tetapi disarankan karena membantu mendeteksi kesalahan.

Sama seperti abstract class, kamu dapat menggunakan interface sebagai tipe referensi. Ini memungkinkan polimorfisme, sehingga berbagai class yang mengimplementasikan interface yang sama dapat diperlakukan secara seragam:

Drawable shape1 = new Circle(5.0);
Drawable shape2 = new Rectangle(4.0, 3.0);

shape1.draw();  // Menggambar lingkaran dengan jari-jari 5.0
shape2.draw();  // Menggambar persegi panjang berukuran 4.0 x 3.0

Ini sangat bermanfaat karena kode yang bekerja dengan referensi Drawable tidak perlu mengetahui tipe class tertentu. Kode itu hanya perlu tahu bahwa object tersebut bisa digambar.

Di pelajaran berikutnya, kamu akan melihat cara satu class dapat mengimplementasikan beberapa interface secara bersamaan.

challenge icon

Tantangan

Mudah

Mari kita bangun sistem speaker yang menunjukkan cara class mengimplementasikan interface. Kamu akan membuat interface yang mendefinisikan kemampuan setiap speaker, lalu membangun dua jenis speaker berbeda yang masing-masing mengimplementasikan kontrak ini dengan caranya sendiri.

Kamu akan mengatur kodemu dalam empat file:

  • Speaker.java: Definisikan interface bernama Speaker yang menyatakan kemampuan yang harus dimiliki setiap speaker. Setiap speaker harus memiliki method speak() yang mengembalikan String. Inilah kontrak yang harus dipenuhi semua class yang mengimplementasikannya.
  • Human.java: Buat class yang mengimplementasikan interface Speaker. Human memiliki field name (String). Sertakan constructor untuk menginisialisasi name, lalu implementasikan method speak() agar mengembalikan: [name] says: Hello everyone!
  • Robot.java: Buat class lain yang mengimplementasikan interface Speaker. Robot memiliki field model (String). Sertakan constructor untuk menginisialisasi model, lalu implementasikan method speak() agar mengembalikan: Robot [model] says: Beep boop!
  • Main.java: Gabungkan semuanya dengan menggunakan polimorfisme berbasis interface. Kamu akan menerima dua input: nama manusia dan model robot. Buat sebuah Human dan sebuah Robot, lalu simpan keduanya dalam array berisi referensi Speaker. Lakukan perulangan pada array dan cetak hasil pemanggilan speak() pada setiap speaker.

Kamu akan menerima dua input: nama manusia (String) dan model robot (String).

Output-mu harus menampilkan dua baris, satu untuk setiap speaker. Perhatikan bahwa Human dan Robot dapat diperlakukan secara seragam melalui interface Speaker, meskipun cara bicara keduanya sangat berbeda!

Coba sendiri

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Baca input
        String humanName = scanner.nextLine();
        String robotModel = scanner.nextLine();
        
        // TODO: Buat object Human dengan nama yang diberikan
        
        // TODO: Buat object Robot dengan model yang diberikan
        
        // TODO: Buat array berisi referensi Speaker ke kedua object tersebut
        
        // TODO: Lakukan perulangan pada array dan cetak hasil speak() untuk setiap speaker
    }
}
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pemrograman Berorientasi Objek

Latihan sendiri: Compiler Java online