Perbedaan antara kelas abstrak dan antarmuka di java

Perbedaan antara kelas abstrak dan antarmuka di java

Antarmuka Kelas Vs Abstrak di Java

Untuk memahami perbedaan antara kelas abstrak dan antarmuka di Java, penting untuk, pertama -tama, memahami masing -masing secara mandiri. Kelas abstrak di Java digunakan dalam deklarasi subkelas dengan serangkaian karakteristik umum. Penggunaan umum kelas abstrak adalah kelas super kelas lain yang, pada dasarnya, memungkinkannya untuk memperluas kelas abstrak. Kata kunci abstrak digunakan dalam deklarasi kelas abstrak. Sama seperti kelas lain yang akan dimiliki, kelas abstrak memiliki bidang yang menggambarkan metode dan karakteristik yang dapat dilakukan kelas. Dengan deklarasi kelas abstrak semata, kelas tidak dapat dimulai

Antarmuka Java dapat disamakan dengan protokol. Ini mewakili perilaku yang telah ditentukan dan disepakati yang memungkinkan untuk fasilitasi interaksi objek yang tidak terkait. Bergantung pada pengguna, antarmuka memegang kunci untuk berbagai tindakan yang diimplementasikan. Antarmuka, oleh karena itu, berfungsi sebagai penghubung antara produsen dan konsumen. Antarmuka di Java, dengan demikian, sekelompok metode yang mengandung badan kosong yang mungkin memiliki deklarasi yang konstan. Dalam mengekspos kelas ke antarmuka Java, itu berarti bahwa perilaku yang diharapkan dari kelas adalah implementasi semua metode antarmuka.


Perbedaan

Pertama, kelas abstrak memungkinkan untuk bidang yang tidak statis atau final sebagai lawan dari bidang statis dan akhir yang digunakan dalam antarmuka. Antarmuka tidak dapat memiliki kode implementasi yang digunakan di dalamnya, dan mungkin ada kode implementasi yang digunakan dalam kelas abstrak. Kode implementasi diluncurkan di kelas abstrak dapat memiliki beberapa atau semua metode yang diimplementasikan. Secara default, semua metode antarmuka adalah “abstrak."

Visibilitas juga dimungkinkan untuk metode atau anggota kelas abstrak yang dapat bervariasi seperti publik, dilindungi, pribadi, atau tidak sama sekali. Visibilitas antarmuka, di sisi lain, hanya dapat ditetapkan pada satu mode visibilitas yang merupakan “publik.'"

Kelas abstrak akan secara otomatis mewarisi kelas objek. Ini, pada dasarnya, berarti bahwa metode seperti clone () dan equals () disertakan. Dalam antarmuka, tidak ada warisan kelas objek yang mungkin. Setelah ini, kelas abstrak memiliki kemampuan memiliki konstruktor, tetapi antarmuka tidak dapat memilikinya.

Antarmuka di Java juga memiliki fungsi yang sangat penting dengan implementasi warisan berganda karena suatu kelas hanya dapat memiliki satu kelas super. Meskipun hanya satu kelas super yang dapat hadir, itu dapat diimplementasikan dalam jumlah antarmuka apa pun. Tidak mungkin memiliki banyak warisan di kelas abstrak.

Dalam kinerja, antarmuka cenderung lebih lambat dalam implementasi yang bertentangan dengan kelas abstrak terutama karena arah ekstra menemukan metode yang sesuai di kelas. Perbedaannya, bagaimanapun, menjadi lebih lambat karena mesin virtual Java modern yang terus ditingkatkan.

Menambahkan metode dalam antarmuka mengharuskan Anda untuk melacak semua kelas implementasi yang mengimplementasikan antarmuka spesifik. Atau, Anda dapat memperluas antarmuka sehingga memungkinkannya memiliki metode tambahan. Jika Anda berurusan dengan kelas abstrak, yang diperlukan hanyalah menambahkan implementasi default dari metode ini dan kode terus berfungsi. Sejauh perbedaan ada antara kelas abstrak dan antarmuka, penting untuk dicatat bahwa mereka bukan saingan, tetapi perbedaan yang disebutkan di sini berfungsi untuk saling melengkapi satu sama lain.  

Ringkasan

  1. Bidang kelas abstrak tidak statis atau final dibandingkan dengan antarmuka yang memiliki tabel statis dan akhir.

  2. Tidak ada kode implementasi yang dapat digunakan dalam antarmuka saat dapat digunakan di kelas abstrak.

  3. Visibilitas antarmuka hanya dapat bersifat publik sementara visibilitas kelas abstrak dapat bervariasi.

  4. Kelas abstrak akan secara otomatis mewarisi kelas objek, tetapi tidak mungkin dalam antarmuka.

  5. Kelas abstrak lebih cepat daripada antarmuka dalam implementasi.