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.0Ini 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.
Tantangan
MudahMari 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 bernamaSpeakeryang menyatakan kemampuan yang harus dimiliki setiap speaker. Setiap speaker harus memiliki methodspeak()yang mengembalikan String. Inilah kontrak yang harus dipenuhi semua class yang mengimplementasikannya.Human.java: Buat class yang mengimplementasikan interfaceSpeaker. Human memiliki fieldname(String). Sertakan constructor untuk menginisialisasi name, lalu implementasikan methodspeak()agar mengembalikan:[name] says: Hello everyone!Robot.java: Buat class lain yang mengimplementasikan interfaceSpeaker. Robot memiliki fieldmodel(String). Sertakan constructor untuk menginisialisasi model, lalu implementasikan methodspeak()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 referensiSpeaker. Lakukan perulangan pada array dan cetak hasil pemanggilanspeak()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
}
}
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pemrograman Berorientasi Objek
1Dasar-Dasar OOP
File EksternalPengantar OOPClass dan ObjectKata Kunci thisMethodField (Atribut)Method KonstruktorOverloading KonstruktorRangkuman: Kalkulator Sederhana4Pewarisan
Pewarisan Dasar (extends)Kata Kunci superMethod Overriding (@Override)Rantai KonstruktorKelas ObjectPewarisan Tunggal dan BertingkatMengapa Tidak Ada Pewarisan Multi-KelasRangkuman: Hierarki Karyawan7method Khusus & class Object
method toString()equals() dan hashCode()method clone()compareTo() dan ComparableAntarmuka ComparatorUlasan: Pengurutan Kustom10Penanganan Exception dalam OOP
Hierarki class ExceptionException KustomError Checked vs UncheckedPola Try-with-ResourcesRekap: Pengguna Tervalidasi2Modifier Akses & Enkapsulasi
Ikhtisar Tingkat AksesMethod Getter dan SetterPenyembunyian InformasiKata Kunci finalUlasan: Pengelola Rekening Bank5Polimorfisme
Dasar method overloadingMethod overriding (Saat program berjalan)Upcasting dan downcastingOperator instanceofclass dan method abstrakUlasan: Kalkulator Bentuk8Konsep OOP Lanjutan
Komposisi vs PewarisanAgregasi vs Komposisiinner, nested, dan anonymous classEnum dan method Enumrecord (Java 16+)sealed class (Java 17+)11Pola Desain Bagian 1
Pengantar Pola DesainPola SingletonPola FactoryPola BuilderPola ObserverPola Strategy3property class dan Anggota Statis
Variabel Instance vs Statismethod StatisBlok StatisKonstanta (static final)Rangkuman: Penghitung dan Utilitas6Antarmuka & Kelas Abstrak
Pengantar AntarmukaMengimplementasikan AntarmukaImplementasi Beberapa AntarmukaDefault & Static pada AntarmukaKelas Abstrak vs AntarmukaAntarmuka FungsionalRekap: Sistem PembayaranLatihan sendiri: Compiler Java online