JavaRush /Java Blog /Random-ID /Apa itu antarmuka
fog
Level 18

Apa itu antarmuka

Dipublikasikan di grup Random-ID
Antarmuka adalah kontrak (perjanjian) publik yang diterima secara umum yang menggambarkan beberapa perilaku. Untuk apa mereka dibutuhkan? Misalnya, kita mempunyai tautan yang menunjuk ke daftar string. Katakanlah banyak elemen ditambahkan ke daftar ini di awal, lalu seluruh daftar diproses satu kali. Katakanlah kita memutuskan untuk mengikuti rekomendasi terkenal dan menggunakan classArrayList:
ArrayList<String> list = new ArrayList<>();
Kami menulis perilaku program dalam 100.500 baris kode yang menggunakan daftar string ini, dan menggunakan metode khusus kelas untuk mengoptimalkan kinerja ArrayList. Misalnya pastikanCapacity() . Selama baris ditambahkan ke akhir daftar, semuanya berfungsi dengan baik dan cepat. Namun sekarang kita perlu mengubah orientasi program kita ke jenis pekerjaan yang sedikit berbeda, di mana baris-baris ditambahkan terutama di awal daftar. Untuk jenis beban ini jauh lebih cocok LinkedList. Tetapi jika kita ingin menerjemahkan program kita yang terdiri dari 100.500 baris kode ke dalam rails LinkedList, maka kita perlu menemukan dan menghapus penggunaan ArrayListmetode tertentu, mungkin di beberapa tempat akan sangat mengubah logika setiap bagian program. Jika kita hanya menggunakan metode yang tersedia di ArrayList, dan di LinkedList, maka kita tidak perlu melakukan ini. Kita cukup mengubah satu baris kode - deklarasi daftar:
LinkedList<String> list = new LinkedList<>();
Kita dapat melihat bahwa akan lebih mudah untuk menempatkan deklarasi metode umum untuk kelas-kelas ini di kelas leluhur, mungkin abstrak, misalnya AbstractList. Dalam hal ini, kita dapat mendeklarasikan daftar kita seperti ini:
AbstractList<String> list = new ArrayList<>();
Dan kita dapat dengan cepat mengubah penerapannya seperti ini:
AbstractList<String> list = new LinkedList<>();
Namun dalam kasus ini, kelas yang dapat kita gunakan dalam program kita dibatasi hanya pada turunan dari kelas tersebut AbstractList, meskipun ada kelas yang lebih cocok yang bukan merupakan turunan dari kelas tersebut AbstractList, tetapi memiliki metode yang sama dengan perilaku yang sama. Apa yang harus saya lakukan? Inilah sebabnya mengapa antarmuka diciptakan . Antarmuka adalah konvensi tentang sekumpulan metode dan perilakunya yang dapat dikomit oleh kelas yang sama sekali tidak terkait, sehingga memungkinkan salah satu metode tersebut untuk direferensikan oleh satu referensi. Misalnya seperti ini:
List<String> list;
list = new ArrayList<>();
list = new LinkedList<>();
list = new AnotherListClass<>();
Bahkan jika AnotherListClasskelas tidak memiliki kelas nenek moyang yang sama, ArrayListkecuali . Contoh antarmuka yang bagus adalah kemudi mobil - mobil memiliki roda kemudi, pedal, dan girboks. Di sebagian besar mobil, elemen-elemen ini mengikuti konvensi perilaku yang sama. Misalnya, jika Anda memutar roda kemudi berlawanan arah jarum jam, mobil akan berbelok ke kiri, bukannya melaju kencang, apa pun mereknya. Jika Anda tahu cara menggunakan kontrol ini, Anda dapat dengan mudah menangani mobil apa pun, apa pun model, tahun, merek, atau jenis mesinnya. Selain itu, kita dapat membayangkan situasi di mana jenis transportasi yang sama sekali berbeda (misalnya, pesawat ruang angkasa) memiliki antarmuka kontrol yang sama dengan mobil. Jika Anda, yang mengetahui cara mengemudikan mobil, mendapati diri Anda berada di kursi pilot kapal tersebut, Anda akan dapat menghindari tersesat dalam situasi ini. Mari kita ulangi sekali lagi:LinkedListObject
  • Antarmuka adalah kontrak (kesepakatan) tentang perilaku.
  • Banyak kelas, bahkan yang tidak memiliki hubungan warisan, dapat menyatakan bahwa mereka setuju untuk mematuhi kontrak ini (implementasi antarmuka).
  • Menempatkan deskripsi perilaku dalam antarmuka terpisah sangat mudah, karena meningkatkan fleksibilitas kode, memungkinkan Anda untuk mengalihkan implementasi (kelas yang mengimplementasikan antarmuka) antarmuka ke kelas yang tidak terkait dengan pewarisan.
Komentar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION