"Halo, Amigo! Hari ini saya ingin memberi tahu Anda alasan mengapa antarmuka ada. Anda sering mendengar bahwa kelas, objek, atau entitas tertentu mendukung antarmuka tertentu. Apa artinya mendukung antarmuka ? "

Antarmuka ada untuk mendukung perilaku tertentu - 1

Dalam arti yang lebih luas, antarmuka apa pun adalah mekanisme sesuatu untuk berinteraksi dengan sesuatu yang lain. Misalnya, remote TV adalah antarmuka jarak jauh. Seekor anjing memahami dan menjalankan perintah, yang berarti bahwa anjing tersebut mendukung antarmuka suara (kontrol). Singkatnya, kita dapat mengatakan bahwa antarmuka adalah cara standar untuk dua hal untuk berinteraksi, di mana kedua belah pihak mengetahui standarnya. Saat seseorang menyuruh anjing untuk "duduk", perintahnya adalah bagian dari "antarmuka kontrol suara anjing", dan jika anjing mematuhi perintah tersebut, maka kita katakan bahwa anjing tersebut mendukung antarmuka tersebut.

Begitu pula dalam pemrograman. Metode adalah tindakan yang dilakukan pada suatu objek, pada datanya. Dan jika sebuah kelas mengimplementasikan metode tertentu, maka itu «mendukung eksekusi» dari perintah tertentu. Apa yang kita peroleh dengan menggabungkan metode ke dalam antarmuka?

1) Setiap interface , seperti class , memiliki nama yang unik. Kedua belah pihak dapat 100% yakin bahwa pihak lain mendukung antarmuka persis yang mereka ketahui dan bukan antarmuka serupa.

2) Setiap antarmuka memberlakukan batasan tertentu pada kelas yang akan mendukungnya. Kelas (pengembangnya) memutuskan apa yang akan dilakukannya ketika metode yang diwarisi dari antarmuka dipanggil, tetapi hasilnya harus dalam batas ekspektasi yang masuk akal. Jika kita memerintahkan seekor anjing untuk "duduk" dan kemudian berguling-guling di tempat selama 5 menit dan kemudian duduk, maka itu mendukung antarmuka. Tetapi jika itu malah mencengkeram kaki Anda, maka kami hampir tidak dapat mengatakan itu mendukung antarmuka. Menjalankan perintah tidak menghasilkan hasil yang diharapkan.

Katakanlah Anda dan teman Anda sedang menulis permainan komputer. Dan Anda ditugaskan untuk memprogram perilaku satu karakter. Salah satu kolega Anda telah menulis kode untuk menampilkan semua karakter di layar. Rekan kedua, yang bertanggung jawab menyimpan game ke disk, telah menulis kode untuk menyimpan semua objek game ke file. Masing-masing menulis banyak kode dan membuat antarmuka untuk berinteraksi dengan kode tersebut. Misalnya, mungkin terlihat seperti ini:

kode jawa Keterangan
interface Saveable
{
 void saveToMap(Map<String, Object> map);
 void loadFromMap(Map<String, Object> map);
}
— Antarmuka untuk menyimpan / memuat objek dari peta.
interface Drawable
{
 void draw(Screen screen);
}
— Antarmuka untuk menggambar objek di dalam objek Layar yang diteruskan.
class PacMan implements Saveable, Drawable
{
…
}
— Kelas Anda, yang mendukung dua antarmuka.

Dengan kata lain, untuk mendukung antarmuka apa pun (grup antarmuka), kelas Anda harus:

1) Mewarisi mereka

2) Terapkan metode yang dideklarasikan di dalamnya

3) Metode harus melakukan apa yang dimaksudkan untuk dilakukan.

Kemudian kode program lainnya, yang tidak tahu apa-apa tentang kelas Anda dan objeknya, dapat bekerja dengan kelas Anda.

"Mengapa kode itu tidak tahu apa-apa tentang kelasku?"

"Katakanlah Anda mengambil kode dari sebuah program yang ditulis seseorang setahun yang lalu. Atau misalkan teman Anda membeli/melisensikan mesin game dari orang lain. Anda memiliki kode yang berfungsi untuk game tersebut. Ribuan objek yang berinteraksi satu sama lain. Dan mereka dapat dengan mudah berinteraksi dengan objek Anda jika Anda membuat interaksi itu terjadi melalui antarmuka yang telah diterapkan dengan benar oleh kelas Anda."

"Jauh! Aku tidak tahu itu mungkin."

"Semua proyek besar bekerja seperti ini. Orang sudah lama berhenti menulis dari awal."

Orang juga tidak menemukan kembali matematika dan alfabet setiap saat. Sebaliknya, mereka mempelajari segala sesuatu yang ditemukan sebelum mereka.