Perbezaan antara kelas abstrak dan antara muka di Java

Perbezaan antara kelas abstrak dan antara muka di Java

Kelas abstrak dan antara muka kedua -duanya digunakan terutamanya untuk abstraksi, namun mereka sangat berbeza antara satu sama lain. Kedua -duanya adalah bahagian teras Java tetapi mempunyai penggunaan aplikasi mereka sendiri. Walaupun kedua -dua istilah mungkin sinonim antara satu sama lain, mereka tidak boleh digunakan secara bergantian.

Terdapat perbezaan yang signifikan antara kedua -dua. Walaupun kaedah antara muka adalah abstrak secara lalai, abstrak boleh mengandungi kaedah abstrak dan tidak abstrak. Nah, sejak Java 8, antara muka juga mempunyai pelaksanaan kaedah dan mereka boleh mempunyai kaedah statik dan lalai di Java. Mari kita mengkaji perbezaan antara kedua -dua secara terperinci.

Apakah kelas abstrak di java?

Kelas abstrak di java adalah kelas yang diisytiharkan abstrak - mungkin atau mungkin tidak mengandungi kaedah abstrak. Ia agak serupa dengan antara muka Java kecuali fakta bahawa ia boleh mengandungi pelaksanaan kaedah lalai. Seperti dalam pengaturcaraan berorientasikan objek, abstraksi dalam java dicapai menggunakan kelas abstrak dan antara muka. Di Java, abstraksi bermaksud menyembunyikan butiran yang tidak relevan dari pengguna untuk memberi tumpuan hanya pada butiran penting untuk meningkatkan kecekapan dengan itu mengurangkan kerumitan. Kata kunci "abstrak" digunakan untuk membuat kelas abstrak sebelum kata kunci kelas dalam perisytiharan kelas.

Kelas abstrak mungkin atau mungkin tidak mengandungi kaedah abstraksi (kaedah tanpa badan), tetapi jika kelas mempunyai sekurang -kurangnya satu kaedah abstraksi, ia mesti diisytiharkan abstrak. Walau bagaimanapun, kaedah tidak abstrak hanya boleh digunakan dalam kelas abstrak, tetapi hanya untuk melaksanakan tingkah laku lalai. Kaedah dalam kelas abstrak boleh mempunyai pengubah akses seperti swasta, awam, statik dan dilindungi, bergantung pada tahap penglihatan. Kelas abstrak tidak dapat ditandakan dan tidak memberikan abstraksi 100 peratus kerana fakta bahawa ia boleh mempunyai kaedah konkrit.

Apa itu antara muka?

Antara muka walaupun kelihatan seperti kelas, tidak. Kerana Java tidak menyokong pelbagai warisan, antara muka kadang -kadang sesuai untuk menyediakan asas untuk hierarki kelas. Antara muka adalah lebih daripada satu cetak biru kelas yang juga digunakan untuk mencapai abstraksi di Java. Ia mengandungi kaedah abstrak dan pemalar statik. Secara ringkas, antara muka adalah koleksi kaedah abstrak yang digunakan untuk menentukan tingkah laku yang harus dilaksanakan oleh kelas. Tidak seperti kelas abstrak, antara muka memberikan abstraksi penuh di Java. Ia boleh mempunyai kedua -dua kaedah dan pembolehubah seperti kelas, namun kaedah yang diisytiharkan dalam antara muka adalah abstrak secara lalai.

Perbezaan antara kelas abstrak dan antara muka di Java

  1. "Warisan Pelbagai" kelas abstrak dan antara muka di Java - Walaupun kedua -dua kelas dan antara muka abstrak digunakan terutamanya untuk abstraksi, mereka agak berbeza antara satu sama lain. Walaupun kelas abstrak adalah kelas, antara muka adalah antara muka. Ini bermakna sementara antara muka hanya dapat memanjangkan antara muka Java yang lain, kelas abstrak dapat melaksanakan pelbagai warisan di Java. Nah, Java tidak menyokong pelbagai warisan tetapi seseorang boleh melaksanakan pelbagai warisan di Java.
  2. "Jenis kaedah" kelas abstrak dan antara muka di Java - Perbezaan utama kedua antara kedua-duanya ialah walaupun antara muka hanya boleh mempunyai kaedah abstrak, kelas abstrak boleh mempunyai kaedah abstrak dan tidak abstrak. Walau bagaimanapun, sejak Java 8, antara muka juga boleh mempunyai kaedah lalai dan statik.
  3. "Pengubahsuaian Akses" kelas abstrak dan antara muka di Java - Kelas abstrak boleh mempunyai pengubah akses awam, swasta dan dilindungi, namun kaedah antara muka secara tersirat awam dan abstrak. Anda tidak boleh menggunakan pengubah akses lain dengan kaedah antara muka '.
  4. "Pelaksanaan" kelas abstrak dan antara muka di Java - Kelas abstrak dapat memberikan pelaksanaan antara muka. Antara muka, sebaliknya, tidak dapat memberikan pelaksanaan kelas abstrak.
  5. "Kata kunci" kelas abstrak dan antara muka di Java- Walaupun kata kunci "abstrak" digunakan untuk mengisytiharkan kaedah kelas abstrak sebagai abstrak, bagaimanapun, antara muka adalah cerita yang berbeza; Mereka hanya boleh mempunyai pemalar akhir dan pengisytiharan kaedah akhir, statik.
  6. "Penggunaan" kelas abstrak dan antara muka di Java - Walaupun antara muka sesuai untuk pengisytiharan jenis, kelas abstrak paling sesuai untuk perspektif kebolehgunaan dan evolusi kod. Antara muka kelihatan seperti kelas, tetapi bukan kelas.
  7. "Kebolehpercayaan" kelas abstrak dan antara muka di Java- Satu lagi perbezaan utama antara kelas abstrak dan antara muka adalah bahawa bekas adalah sedikit lebih cepat daripada yang terakhir kerana carian biasanya terlibat dalam antara muka sebelum sebarang kaedah yang ditindas dipanggil di Java.
  8. "Pembolehubah akhir" kelas abstrak dan antara muka di Java - Pembolehubah yang diisytiharkan dalam antara muka adalah muktamad secara lalai, sementara kelas abstrak mungkin atau mungkin tidak mengandungi pembolehubah bukan akhir.

Kelas Abstrak Vs Interface dalam Java: Jadual Perbandingan

Kelas Abstrak Antara muka
Kata kunci abstrak digunakan untuk membuat kelas abstrak dan ia boleh digunakan dengan kaedah. Kata kunci antara muka digunakan untuk membuat antara muka tetapi tidak dapat digunakan dengan kaedah.
Kelas hanya boleh memanjangkan satu kelas abstrak. Kelas boleh melaksanakan lebih daripada satu antara muka.
Kelas abstrak boleh mempunyai kaedah abstrak dan tidak abstrak. Antara muka hanya boleh mempunyai kaedah abstrak.
Pembolehubah tidak muktamad secara lalai. Ia mungkin mengandungi pemboleh ubah bukan akhir. Pembolehubah muktamad secara lalai di antara muka.
Kelas abstrak dapat memberikan pelaksanaan antara muka. Antara muka tidak dapat memberikan pelaksanaan kelas abstrak.
Ia boleh mempunyai kaedah dengan pelaksanaan. Ia memberikan abstraksi mutlak dan tidak dapat melaksanakan kaedah.
Ia boleh mempunyai pengubah akses awam, swasta, statik dan dilindungi. Kaedah secara tersirat awam dan abstrak di antara muka java.
Ia tidak menyokong pelbagai warisan. Ia menyokong pelbagai warisan.
Ia sesuai untuk penggunaan semula kod dan perspektif evolusi. Ia sesuai untuk pengisytiharan jenis.

Ringkasan mata pada kelas abstrak dan antara muka di Java

Kedua -dua kelas abstrak dan antara muka digunakan untuk abstraksi; Walau bagaimanapun, mereka mempunyai bahagian perbezaan yang saksama. Perbezaan utama antara kedua -duanya didorong oleh kaedah abstraksi. Walaupun bekas mungkin atau mungkin tidak mempunyai kaedah abstrak, yang terakhir secara tersirat abstrak. Kelas abstrak boleh mempunyai kaedah abstrak dan tidak abstrak. Antara muka, sebaliknya, hanya boleh mempunyai kaedah abstrak, oleh itu mereka tidak dapat melaksanakan, yang hanya bermaksud antara muka tidak boleh mempunyai kaedah bukan abstrak. Kelas abstrak tidak dapat diterapkan yang melarang penciptaan objek. Antara muka, sebaliknya, mungkin kelihatan seperti kelas, tetapi tidak.