Pengantar Antarmuka
Termasuk bagian Pemrograman Berorientasi Objek dalam perjalanan Java di Coddy. Pelajaran 34 dari 87.
Kamu sudah melihat bagaimana class abstrak menetapkan kontrak yang harus diikuti subclass. Namun, bagaimana jika kamu ingin sebuah class mengikuti beberapa kontrak? Java tidak mengizinkan sebuah class mewarisi beberapa class, tetapi Java mengatasi masalah ini dengan interface.
Interface adalah kontrak yang menentukan apa yang dapat dilakukan oleh sebuah class, tanpa menjelaskan bagaimana class tersebut melakukannya. Berbeda dengan class abstrak, interface hanya berisi tanda tangan method (secara default) tanpa implementasi:
public interface Drawable {
void draw();
}
public interface Resizable {
void resize(int width, int height);
}Anggap interface sebagai sebuah janji. Saat sebuah class mengimplementasikan interface, class tersebut berjanji untuk menyediakan implementasi bagi semua method yang dideklarasikan dalam interface tersebut. Interface mendefinisikan kemampuan, dan class menyediakan perilaku.
Interface dideklarasikan menggunakan kata kunci interface, bukan class. Semua method dalam interface secara implisit bersifat public dan abstract, jadi kamu tidak perlu menulis kata kunci tersebut:
public interface Playable {
void play(); // secara implisit public abstract
void pause();
void stop();
}Interface juga dapat mendeklarasikan konstanta, yang secara implisit bersifat public static final:
public interface GameConstants {
int MAX_PLAYERS = 4; // secara implisit bersifat public static final
}Di pelajaran berikutnya, kamu akan belajar cara class mengimplementasikan antarmuka menggunakan kata kunci implements.
Tantangan
MudahMari buat sistem kontrol perangkat dengan mendefinisikan interface yang menjelaskan kemampuan berbagai perangkat. Tantangan ini berfokus pada pembuatan interface: kontrak yang menentukan kemampuan tanpa menjelaskan cara kerjanya.
Kamu akan mengatur kodemu dalam tiga file:
Switchable.java: Buat interface yang menjelaskan arti sebuah perangkat dapat dinyalakan dan dimatikan. Setiap perangkat yang dapat dinyalakan dan dimatikan harus bisa dinyalakan dan dimatikan. Deklarasikan dua method:turnOn()danturnOff(). Ingat, method interface secara implisit bersifat public dan abstract, jadi kamu hanya perlu menuliskan signature method-nya.Adjustable.java: Buat interface lain yang menjelaskan arti sebuah perangkat dapat disesuaikan. Perangkat yang dapat disesuaikan harus bisa mengatur levelnya. Deklarasikan methodsetLevel(int level). Sertakan juga konstantaMAX_LEVELdengan nilai100: ingat bahwa konstanta dalam interface secara implisit bersifatpublic static final.Main.java: Tunjukkan bahwa interface-mu sudah didefinisikan dengan benar dengan mencetak informasi tentangnya. Kamu akan menerima satu input: nilai level (int). Cetak tiga baris berikut:Switchable methods: turnOn, turnOffAdjustable methods: setLevelMax level constant: [MAX_LEVEL value](akses konstanta dari interface Adjustable)
Setting level to: [input level]
Kamu akan menerima satu input: nilai level (int).
Tantangan ini hanya berfokus pada pendefinisian interface: cetak biru yang menjelaskan berbagai kemampuan. Di pelajaran berikutnya, kamu akan belajar cara class mengimplementasikan interface ini untuk menyediakan perilaku yang sebenarnya!
Coba sendiri
import java.util.Scanner;
class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int level = scanner.nextInt();
// TODO: Cetak informasi tentang interface
// Cetak: "Switchable methods: turnOn, turnOff"
// Cetak: "Adjustable methods: setLevel"
// Cetak: "Max level constant: " diikuti oleh Adjustable.MAX_LEVEL
// Cetak: "Setting level to: " diikuti oleh level input
}
}
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