Kelas dan antarmuka abstrak keduanya terutama digunakan untuk abstraksi, namun keduanya sangat berbeda satu sama lain. Keduanya merupakan bagian inti dari Java tetapi memiliki kegunaan aplikasi mereka sendiri. Meskipun kedua istilah ini dapat identik satu sama lain, mereka tidak dapat digunakan secara bergantian.
Ada perbedaan yang signifikan antara keduanya. Sementara metode antarmuka adalah abstrak secara default, abstrak dapat berisi metode abstrak dan non-abstrak. Nah, sejak Java 8, antarmuka juga memiliki implementasi metode dan mereka dapat memiliki metode statis dan default di Jawa. Mari kita pelajari perbedaan keduanya secara terperinci.
Kelas abstrak di Jawa adalah kelas yang dinyatakan abstrak - mungkin atau mungkin tidak mengandung metode abstrak. Ini sangat mirip dengan antarmuka Java kecuali fakta bahwa itu dapat berisi implementasi metode standar. Seperti dalam pemrograman berorientasi objek, abstraksi di Jawa dicapai dengan menggunakan kelas dan antarmuka abstrak. Di Jawa, abstraksi berarti menyembunyikan detail yang tidak relevan dari pengguna untuk fokus hanya pada detail penting untuk meningkatkan efisiensi sehingga mengurangi kompleksitas. Kata kunci "abstrak" digunakan untuk membuat kelas abstrak tepat sebelum kata kunci kelas dalam deklarasi kelas.
Kelas abstrak mungkin atau mungkin tidak mengandung metode abstraksi (metode tanpa tubuh), tetapi jika kelas memiliki setidaknya satu metode abstraksi, itu harus dinyatakan abstrak. Namun, metode non-abstrak hanya dapat juga digunakan dalam kelas abstrak, tetapi hanya untuk menerapkan perilaku default. Metode dalam kelas abstrak dapat memiliki pengubah akses seperti privat, publik, statis dan terlindungi, tergantung pada tingkat visibilitas. Kelas abstrak tidak dapat dipakai dan tidak memberikan abstraksi 100 persen karena fakta bahwa ia dapat memiliki metode konkret.
Antarmuka meskipun terlihat seperti kelas, sebenarnya tidak. Karena Java tidak mendukung banyak pewarisan, suatu antarmuka kadang-kadang sangat ideal untuk menyediakan basis untuk hirarki kelas. Antarmuka lebih dari cetak biru kelas yang juga digunakan untuk mencapai abstraksi di Jawa. Ini berisi metode abstrak dan konstanta statis. Secara sederhana, antarmuka adalah kumpulan metode abstrak yang digunakan untuk menentukan perilaku yang harus diimplementasikan oleh kelas. Tidak seperti kelas abstrak, antarmuka menyediakan abstraksi penuh di Jawa. Ia dapat memiliki kedua metode dan variabel seperti kelas, namun metode yang dideklarasikan dalam antarmuka adalah abstrak secara default.
Kelas Abstrak | Antarmuka |
Kata kunci abstrak digunakan untuk membuat kelas abstrak dan dapat digunakan dengan metode. | Kata kunci antarmuka digunakan untuk membuat antarmuka tetapi tidak dapat digunakan dengan metode. |
Kelas hanya dapat memperpanjang satu kelas abstrak. | Kelas dapat mengimplementasikan lebih dari satu antarmuka. |
Kelas abstrak dapat memiliki metode abstrak dan non-abstrak. | Antarmuka hanya dapat memiliki metode abstrak. |
Variabel tidak final secara default. Ini mungkin berisi variabel non-final. | Variabel bersifat final secara default dalam sebuah antarmuka. |
Kelas abstrak dapat menyediakan implementasi antarmuka. | Antarmuka tidak dapat menyediakan implementasi kelas abstrak. |
Itu dapat memiliki metode dengan implementasi. | Ini memberikan abstraksi absolut dan tidak dapat memiliki implementasi metode. |
Itu dapat memiliki pengubah akses publik, pribadi, statis dan dilindungi. | Metode secara implisit bersifat publik dan abstrak di antarmuka Java. |
Itu tidak mendukung banyak warisan. | Ini mendukung banyak warisan. |
Ini sangat ideal untuk penggunaan kembali kode dan perspektif evolusi. | Ini sangat ideal untuk deklarasi Type. |
Baik kelas abstrak maupun antarmuka digunakan untuk abstraksi; Namun, mereka memiliki perbedaan yang adil. Perbedaan utama antara keduanya didorong oleh metode abstraksi. Sementara yang pertama mungkin atau mungkin tidak memiliki metode abstrak, yang terakhir adalah abstrak secara implisit. Kelas abstrak dapat memiliki metode abstrak dan non-abstrak. Antarmuka, di sisi lain, hanya dapat memiliki metode abstrak, sehingga mereka tidak dapat memiliki implementasi, yang berarti antarmuka tidak dapat memiliki metode non-abstrak. Kelas abstrak tidak dapat dipakai yang melarang penciptaan objek. Antarmuka, di sisi lain, mungkin terlihat seperti kelas, tetapi sebenarnya tidak.