Diferențele dintre interfața Java și clasa abstractă

O interfață va specifica ce trebuie să facă o clasă, dar nu cum. Este practic un model pentru clasă. Variabilele declarate într-o interfață sunt publice, statice și finale în mod implicit. O clasă care este declarată prin cuvântul cheie „abstract” este numită clasă abstractă O clasă care este derivată din clasa Abstract trebuie să definească toate metodele care sunt declarate abstracte într-o clasă abstractă.

Ce este interfața?

O interfață este ca o clasă, dar nu este cea care poate avea metode și variabile ca o clasă, dar metodele declarate într-o interfață sunt abstracte în mod implicit. O interfață este utilizată pentru a asigura o abstractizare completă, deoarece metodele în interfețe nu au un corp. Deci trebuie să fie implementate de către clasă înainte de a încerca să le acceseze. În general, o clasă care implementează interfața trebuie să definească toate metodele declarate într-o interfață, dacă nu, atunci clasa trebuie să fie declarată abstractă. Nu putem extinde interfața la mai multe clase, deoarece Java nu permite. Pentru a declara o interfață, trebuie să utilizăm un cuvânt cheie de interfață și să implementăm interfața de care avem nevoie pentru a utiliza cuvântul cheie de implementare.

Ce este Rezumatul?

O clasă care este declarată prin cuvântul cheie „abstract” este numită clasă abstractă. O clasă abstractă poate avea metode abstracte (metodă fără corp) și metode concrete (metodă cu un corp), spre deosebire de o clasă normală. Clasa abstractă nu poate fi inițiată, adică nu putem crea un obiect pentru ea, dar putem avea referințe la o clasă abstractă prin crearea unei alte clase care extinde clasa abstractă și asigură implementarea metodelor. Putem folosi un obiect al unui copil (care este nou creat) pentru a numi metode abstracte și normale. Poate avea constructori și se numește o clasă abstractă atunci când este creată o instanță de clasă moștenită. În Java, putem avea o clasă abstractă fără cuvinte cheie abstracte, dar acele clase nu pot fi instanțate, doar moștenite și pot avea și metode finale.

Comparație față în cap între interfața Java și clasa abstractă (Infografie)

Mai jos sunt cele mai bune 9 comparații între interfața Java și clasa abstractă

Diferențele cheie între interfața Java și clasa abstractă

Atât Java Interface, cât și Abstract Class sunt alegeri populare pe piață; hai să discutăm unele dintre diferențele majore dintre interfața Java și clasa abstractă:

  • O interfață poate fi utilizată pentru a obține moșteniri multiple și cuplaj liber, pe care nu le putem realiza prin clasa abstractă.
  • Interfață folosită pentru a realiza o abstractizare completă, în timp ce o clasă abstractă poate realiza abstracție parțială.
  • O clasă abstractă extinde doar o clasă normală sau o clasă abstractă simultan, în timp ce o interfață poate extinde orice număr de interfețe simultan.
  • O clasă abstractă extinde o altă clasă abstractă sau normală, în timp ce o interfață poate extinde doar o altă interfață Java.
  • Într-o clasă abstractă, trebuie să declaram metode folosind cuvântul cheie „abstract”, în timp ce în interfață putem declara metode cu sau fără cuvântul cheie „abstract”.
  • O interfață poate avea doar metode abstracte, în timp ce o clasă abstractă poate avea atât clase abstracte cât și clase normale.
  • O clasă abstractă poate avea diferite variabile precum static, final, non-final, nestatic, public, privat etc., în timp ce Interfața poate avea doar variabile publice, statice și finale.
  • O clasă abstractă și metodele sale pot fi create prin cuvântul cheie „abstract”, în timp ce cuvântul cheie de interfață este folosit pentru a crea interfață, dar nu metode.
  • O clasă abstractă poate avea constructori, în timp ce interfața nu are un constructor.
  • O clasă abstractă este utilizată pentru a defini contractul, implementările metodelor pentru subclase, în timp ce o interfață este utilizată pentru a defini un contract pentru subclase.
  • O interfață poate extinde doar alte interfețe Java, în timp ce o clasă abstractă poate extinde o altă clasă și implementează și interfața.
  • O clasă care extinde o clasă abstractă folosind cuvintele cheie extinde, trebuie să implementeze toate metodele declarate în clasă abstractă, cu excepția cazului în care o clasă este, de asemenea, o clasă abstractă, în timp ce o clasă care implementează interfața folosind cuvântul cheie de interfață oferă și o implementare pentru toate metodele declarate în interfață.

Tabelul de comparație Interfața Java față de clasa abstractă

Urmează tabelul de comparație între interfața Java și clasa abstractă

Bazele comparației între interfața Java și clasa abstractăClasă abstractăInterfață Java
Tipul metodeiO clasă abstractă poate avea atât metode abstracte (metode fără corp), cât și non-abstracte (metode cu un corp)În interfață, putem avea doar metode abstracte. De la Java 8, Interfața poate avea, de asemenea, metode statice și implicite
SintaxăO clasă abstractă poate fi declarată după cum urmează:
public abstract class school (Public abstract null classes ();
public abstract void force ();)
O interfață poate fi declarată după cum urmează:
formă de interfață publică (Void draw_rect (); Void draw_square ();)
Variabilă finalăO clasă abstractă poate avea variabile finale și non-finale.Întrucât interfața poate avea doar variabile finale, deoarece variabilele sunt finale implicit în interfață.
Punerea în aplicareO clasă abstractă poate asigura implementarea tuturor metodelor abstracte din interfață.Întrucât în ​​interfață nu putem oferi implementarea unei clase abstracte.
Tipul variabilO clasă abstractă poate include toate tipurile de variabile, adică finale, non-finale, statice, nestatice, private, publice etc.Întrucât interfața poate avea doar variabile publice, statice și finale.
Accesul membrilorO clasă abstractă poate avea membrii clasei ca private, protejate, publice etc.O interfață poate avea doar membri ai clasei publice, deoarece datele de interfață sunt publice în mod implicit.
Moștenire și abstractizareO clasă abstractă poate fi extinsă folosind cuvântul cheie „Extended” și trebuie să asigure implementarea tuturor metodelor declarate din clasa părinte sau din clasa abstractăO interfață poate fi implementată folosind cuvântul cheie „interfață” și trebuie să furnizeze implementarea pentru toate metodele declarate în interfață
Implementare multiplăO clasă abstractă poate extinde o altă clasă Java implementează mai multe interfețeO interfață poate extinde doar o altă interfață.
Când să folosițiO clasă abstractă trebuie să fie folosită atunci când unele clase trebuie să partajeze câteva linii de cod, atunci putem pune aceste coduri într-o clasă abstractă și să le extindem de toate clasele conexe.O interfață poate fi folosită atunci când trebuie să obținem moșteniri multiple, abstractizarea completă prin implementarea tuturor metodelor declarate într-o interfață de o clasă care implementează interfața.

Concluzie - Interfața Java vs. clasa abstractă

În cele din urmă, este o imagine de ansamblu asupra diferenței dintre interfața Java și clasa abstractă. Sper că veți înțelege mai bine aceste concepte ale interfeței Java și ale clasei abstracte. Pe baza cerințelor noastre, putem folosi atât interfața Java, cât și clasa abstractă împreună, doar interfață și doar clasa abstractă. Dar utilizarea interfețelor și a clasei abstracte este cea mai bună abordare pentru proiectare. Atunci când o clasă trebuie să partajeze ceva cod, atunci putem plasa codul în clasa abstractă și atunci când este necesară o stare a unui obiect, putem obține definind câmpuri nestatice sau non-finale, atunci putem folosi o clasă abstractă. Putem folosi Interfața atunci când avem nevoie de abstractizare completă, moștenire multiplă și cuplaj liber.

Articol recomandat

Acesta a fost un ghid pentru diferențele de vârf între interfața Java și clasa abstractă. Aici vom discuta, de asemenea, despre diferențele cheie ale Interfeței Java și ale clasei abstracte cu infografie și tabelul de comparație. De asemenea, puteți arunca o privire asupra următoarelor articole -

  1. Cât de folositoare sunt întrebările și răspunsurile la interviu C #?
  2. 8 Comparație utilă-HTML5 vs Flash
  3. Java vs. C # - 8 Diferențe importante
  4. Ruby vs Nod
  5. Comparatie HTML5 vs JavaScript
  6. ArrayList vs Java Vector