JavaRush /Blog Java /Random-MS /Apakah antara muka
fog
Tahap

Apakah antara muka

Diterbitkan dalam kumpulan
Antara muka ialah kontrak (perjanjian) awam yang diterima umum yang menerangkan beberapa tingkah laku. Untuk apa mereka diperlukan? Sebagai contoh, katakan kita mempunyai pautan yang menunjuk kepada senarai rentetan. Katakan bahawa banyak elemen ditambahkan pada senarai ini pada permulaan, dan kemudian keseluruhan senarai diproses sekali. Katakan kami memutuskan untuk mengikuti pengesyoran yang terkenal dan menggunakan kelasArrayList:
ArrayList<String> list = new ArrayList<>();
Kami menulis tingkah laku program dalam 100,500 baris kod yang menggunakan senarai rentetan ini dan menggunakan kaedah khusus kelas untuk mengoptimumkan prestasi ArrayList. Contohnya ensureCapacity() . Selagi baris ditambahkan pada penghujung senarai, semuanya berfungsi dengan baik dan pantas. Tetapi kini kita perlu mengubah orientasi program kita kepada jenis kerja yang sedikit berbeza, di mana baris ditambah terutamanya pada permulaan senarai. Untuk jenis beban ini adalah lebih sesuai LinkedList. Tetapi jika kami ingin menterjemahkan atur cara 100,500 baris kod kami ke rel LinkedList, maka kami perlu mencari dan mengalih keluar penggunaan ArrayListkaedah tertentu, mungkin di beberapa tempat mengubah logik bahagian individu program dengan ketara. Jika kami hanya menggunakan kaedah yang tersedia dalam kedua-dua ArrayList, dan dalam LinkedList, maka kami tidak perlu melakukan ini. Kami hanya boleh menukar satu baris kod - perisytiharan senarai:
LinkedList<String> list = new LinkedList<>();
Kita dapat perhatikan bahawa adalah lebih mudah untuk meletakkan pengisytiharan kaedah biasa untuk kelas ini dalam kelas nenek moyang, mungkin abstrak, sebagai contoh AbstractList. Dalam kes ini, kami boleh mengisytiharkan senarai kami seperti ini:
AbstractList<String> list = new ArrayList<>();
Dan kami boleh menukar pelaksanaan dengan cepat seperti ini:
AbstractList<String> list = new LinkedList<>();
Tetapi dalam kes ini, kelas yang boleh kami gunakan dalam program kami adalah terhad kepada hanya keturunan kelas AbstractList, walaupun terdapat kelas yang lebih sesuai yang bukan keturunan kelas AbstractList, tetapi mempunyai kaedah yang sama dengan tingkah laku yang sama. Apa patut saya buat? Inilah sebabnya antara muka dicipta . Antara muka ialah konvensyen tentang satu set kaedah dan kelakuannya yang boleh dilakukan oleh kelas yang tidak berkaitan sepenuhnya, membenarkan mana-mana daripadanya dirujuk dengan satu rujukan. Contohnya seperti ini:
List<String> list;
list = new ArrayList<>();
list = new LinkedList<>();
list = new AnotherListClass<>();
Walaupun AnotherListClasskelas tidak mempunyai kelas nenek moyang yang sama, ArrayListkecuali . Contoh antara muka yang baik ialah stereng kereta - kereta mempunyai stereng, pedal dan kotak gear. Dalam kebanyakan kereta, elemen ini mengikut konvensyen tingkah laku yang sama. Contohnya, jika anda memusing stereng lawan jam, kereta akan membelok ke kiri dan bukannya memecut laju, tanpa mengira jenamanya. Jika anda tahu cara menggunakan kawalan ini, anda boleh mengendalikan mana-mana kereta dengan mudah, tanpa mengira model, tahun, pembuatan atau jenis enjinnya. Lebih-lebih lagi, seseorang boleh membayangkan situasi di mana jenis pengangkutan yang sama sekali berbeza (contohnya, kapal angkasa) mempunyai antara muka kawalan yang sama seperti kereta. Jika anda, mengetahui cara memandu kereta, mendapati diri anda berada di tempat duduk juruterbang kapal sedemikian, anda akan dapat mengelak daripada tersesat dalam situasi ini. Mari kita ulangi sekali lagi:LinkedListObject
  • Antara muka ialah kontrak (perjanjian) tentang tingkah laku.
  • Banyak kelas, walaupun mereka yang tidak berkaitan dengan warisan, boleh mengisytiharkan bahawa mereka bersetuju untuk mematuhi kontrak ini (pelaksanaan antara muka).
  • Meletakkan perihalan tingkah laku dalam antara muka yang berasingan adalah sangat mudah, kerana ia meningkatkan fleksibiliti kod, membolehkan anda menukar pelaksanaan (kelas melaksanakan antara muka) antara muka kepada kelas yang tidak berkaitan dengan warisan.
Komen
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION