"Helo, Amigo! Hari ini saya ingin memberitahu anda sebab antara muka wujud. Anda sering mendengar bahawa kelas, objek atau entiti tertentu menyokong antara muka tertentu. Apakah maksud menyokong antara muka ? "

Antara muka wujud untuk menyokong tingkah laku tertentu - 1

Dalam erti kata yang lebih luas, mana-mana antara muka ialah mekanisme untuk sesuatu berinteraksi dengan sesuatu yang lain. Sebagai contoh, alat kawalan jauh TV ialah antara muka jauh. Anjing memahami dan melaksanakan arahan, yang bermaksud bahawa anjing itu menyokong antara muka suara (kawalan). Untuk meringkaskan semuanya, kita boleh mengatakan bahawa antara muka ialah cara piawai untuk dua perkara berinteraksi, di mana kedua-dua pihak mengetahui piawaian tersebut. Apabila seseorang memberitahu anjing untuk "duduk", arahannya adalah sebahagian daripada "antara muka kawalan suara anjing", dan jika anjing itu mematuhi arahan itu, maka kami mengatakan bahawa anjing itu menyokong antara muka.

Begitu juga dalam pengaturcaraan. Kaedah ialah tindakan yang dilakukan pada objek, pada datanya. Dan jika kelas melaksanakan kaedah tertentu, maka ia "menyokong pelaksanaan" arahan tertentu. Apa yang kita perolehi dengan menggabungkan kaedah ke dalam antara muka?

1) Setiap antara muka , sama seperti kelas , mempunyai nama yang unik. Kedua-dua pihak boleh 100% pasti bahawa pihak lain menyokong antara muka tepat yang mereka tahu dan bukan antara muka yang serupa.

2) Setiap antara muka mengenakan sekatan tertentu pada kelas yang akan menyokongnya. Kelas (pembangunnya) memutuskan perkara yang akan dilakukan apabila kaedah yang diwarisi daripada antara muka dipanggil, tetapi hasilnya harus berada dalam batas jangkaan yang munasabah. Jika kita mengarahkan anjing untuk "duduk" dan kemudian ia bergolek di tempatnya selama 5 minit dan kemudian duduk, maka ia menyokong antara muka. Tetapi jika ia sebaliknya menangkap anda dengan kaki, maka kita tidak boleh mengatakan ia menyokong antara muka. Melaksanakan arahan tidak menghasilkan hasil yang diharapkan.

Katakan anda dan rakan anda sedang menulis permainan komputer. Dan anda telah ditugaskan untuk memprogramkan tingkah laku satu watak. Salah seorang rakan sekerja anda telah pun menulis kod untuk memaparkan semua aksara pada skrin. Rakan sekerja kedua, yang bertanggungjawab untuk menyimpan permainan ke cakera, telah menulis kod untuk menyimpan semua objek permainan ke fail. Setiap daripada mereka menulis banyak kod dan membuat antara muka untuk berinteraksi dengan kod itu. Sebagai contoh, ia mungkin kelihatan seperti ini:

kod Java Penerangan
interface Saveable
{
 void saveToMap(Map<String, Object> map);
 void loadFromMap(Map<String, Object> map);
}
— Antara muka untuk menyimpan / memuatkan objek daripada peta.
interface Drawable
{
 void draw(Screen screen);
}
— Antara muka untuk melukis objek di dalam objek Skrin yang diluluskan.
class PacMan implements Saveable, Drawable
{
…
}
— Kelas anda, yang menyokong dua antara muka.

Dengan kata lain, untuk menyokong mana-mana antara muka (kumpulan antara muka), kelas anda mesti:

1) Warisi mereka

2) Laksanakan kaedah yang diisytiharkan di dalamnya

3) Kaedah mesti melakukan apa yang mereka ingin lakukan.

Kemudian selebihnya kod program, yang tidak tahu apa-apa tentang kelas anda dan objeknya, boleh berfungsi dengan kelas anda.

"Kenapa kod tidak boleh tahu apa-apa tentang kelas saya?"

"Katakan anda mengambil kod daripada program yang ditulis seseorang setahun lalu. Atau andaikan rakan anda membeli/melesenkan enjin permainan daripada orang lain. Anda mempunyai kod yang berfungsi untuk permainan itu. Beribu-ribu objek yang berinteraksi antara satu sama lain. Dan mereka boleh berinteraksi dengan betul dengan objek anda dengan mudah jika anda membuat interaksi itu berlaku melalui antara muka yang kelas anda telah dilaksanakan dengan betul."

"Jauh! Saya tidak tahu itu mungkin."

"Semua projek besar berfungsi seperti ini. Orang ramai berhenti menulis dari awal dahulu."

Orang juga tidak mencipta semula matematik dan abjad setiap masa. Sebaliknya, mereka mempelajari segala sesuatu yang dicipta sebelum mereka.