JavaRush /Blog Jawa /Random-JV /Apa sing antarmuka
fog
tingkat

Apa sing antarmuka

Diterbitake ing grup
Antarmuka minangka kontrak (perjanjian) umum sing ditampa umum sing nggambarake sawetara prilaku. Apa sing dibutuhake? Contone, ayo ngomong kita duwe link ngarahake menyang dhaptar strings. Ayo dadi ngomong sing akeh unsur sing ditambahake ing dhaftar iki ing wiwitan, lan banjur kabeh dhaftar diproses sapisan. Ayo kita mutusake kanggo ngetutake rekomendasi sing kondhang lan nggunakake kelasArrayList:
ArrayList<String> list = new ArrayList<>();
Kita nulis prilaku program ing 100.500 baris kode sing nggunakake dhaptar strings iki, lan nggunakake cara khusus kelas kanggo ngoptimalake kinerja ArrayList. Contone ensureCapacity() . Anggere baris ditambahake menyang mburi dhaftar, kabeh bisa mlaku lan cepet. Nanging saiki kita kudu reorient program kita kanggo jinis rada beda saka karya, ngendi baris ditambahake utamané ing wiwitan dhaftar. Kanggo jinis beban iki luwih cocok LinkedList. Nanging yen kita pengin nerjemahake program kita saka 100.500 baris kode menyang ril LinkedList, banjur kita kudu golek lan mbusak nggunakake ArrayListcara tartamtu, mbok menawa ing sawetara panggonan nemen ngganti logika bagean individu saka program. Yen kita nggunakake mung cara sing kasedhiya ing loro ArrayList, lan ing LinkedList, banjur kita ora kudu nindakake iki. Kita mung bisa ngganti siji baris kode - deklarasi dhaptar:
LinkedList<String> list = new LinkedList<>();
Kita bisa sok dong mirsani sing bakal luwih trep kanggo nyelehake deklarasi cara umum kanggo kelas kasebut ing kelas leluhur, bisa uga abstrak, contone AbstractList. Ing kasus iki, kita bisa ngumumake dhaptar kaya iki:
AbstractList<String> list = new ArrayList<>();
Lan kita bisa kanthi cepet ngalih implementasine kaya iki:
AbstractList<String> list = new LinkedList<>();
Nanging ing kasus iki, kelas sing bisa digunakake ing program kita mung diwatesi mung turunane kelas AbstractList, sanajan ana kelas sing luwih cocok sing dudu turunan kelas AbstractList, nanging duwe metode sing padha karo prilaku sing padha. Aku kudu piye? Iki sebabe antarmuka diciptakake . Antarmuka minangka konvensi babagan sakumpulan metode lan prilaku sing bisa ditindakake dening kelas sing ora ana hubungane, saengga bisa dirujuk kanthi referensi siji. Contone kaya iki:
List<String> list;
list = new ArrayList<>();
list = new LinkedList<>();
list = new AnotherListClass<>();
Sanajan AnotherListClasskelas ora duwe kelas leluhur umum, ArrayListkajaba . Conto antarmuka sing apik yaiku setir mobil - mobil duwe setir, pedal lan gearbox. Ing mayoritas mobil, unsur kasebut ngetutake konvensi prilaku sing padha. Contone, yen sampeyan nguripake setir counterclockwise, mobil bakal nguripake ngiwa tinimbang nyepetake, preduli saka nggawe. Yen sampeyan ngerti carane nggunakake kontrol iki, sampeyan bisa kanthi gampang nangani mobil sembarang, preduli saka model, taun, nggawe utawa jinis engine. Menapa malih, sampeyan bisa mbayangno kahanan ing ngendi jinis transportasi sing beda-beda (contone, spaceship) nduweni antarmuka kontrol sing padha karo mobil. Yen sampeyan ngerti carane nyopir mobil, golek dhewe ing kursi pilot saka kapal kuwi, sampeyan bakal bisa kanggo supaya ilang ing kahanan iki. Ayo baleni maneh:LinkedListObject
  • Antarmuka minangka kontrak (persetujuan) babagan prilaku.
  • Akeh kelas, malah sing ora ana hubungane karo warisan, bisa nyatakake yen dheweke setuju kanggo netepi kontrak iki (implementasi antarmuka).
  • Nempatake gambaran saka prilaku ing antarmuka kapisah banget trep, amarga nambah keluwesan kode, ngijini sampeyan kanggo ngalih implementasine (kelas ngleksanakake antarmuka) antarmuka kanggo kelas ora gegandhengan karo warisan.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION