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

Anonim

Abstract Class vs Interface în Java

Pentru a înțelege diferențele dintre clasa abstractă și interfața din Java, este important să înțelegeți, în primul rând, fiecare dintre acestea în mod independent. Clasa abstractă din Java este utilizată în declarația de subclase cu un set de caracteristici comune. Utilizarea în comun a clasei abstracte este o clasă superioară a altor clase, care, de fapt, îi permite să extindă clasa abstractă. Un cuvânt cheie abstract este folosit în declararea unei clase abstracte. La fel ca orice altă clasă ar avea, clasa abstractă are câmpuri care descriu metode și caracteristici pe care le poate face clasa. Prin simpla declarare a unei clase abstracte, clasa nu poate fi inițiată

O interfață Java poate fi asimilată unui protocol. Acesta reprezintă un comportament prestabilit și convenit, care permite facilitarea interacțiunii obiectelor care nu au legătură. În funcție de utilizator, interfața deține cheia pentru diferite acțiuni implementate. Prin urmare, interfața servește ca o legătură între producător și consumator. Interfețele din Java sunt, așadar, un grup de metode care conțin corpuri goale care pot avea declarații constante. În expunerea unei clase la interfața Java, înseamnă că comportamentul așteptat al clasei este implementarea tuturor metodelor interfeței.

Diferențe

În primul rând, o clasă abstractă permite câmpuri care nu sunt statice sau finale, spre deosebire de câmpurile statice și finale utilizate în interfețe. Interfețele nu pot avea niciun cod de implementare folosit în ele și poate exista un cod de implementare folosit în clasa abstractă. Codurile de implementare introduse în clasa abstractă pot avea câteva sau toate metodele implementate. În mod implicit, toate metodele interfeței sunt "abstract. „

Vizibilitatea este, de asemenea, posibilă pentru metodele sau membrii unei clase abstracte, care pot varia, cum ar fi public, protejat, privat sau nici unul. Vizibilitatea interfeței, pe de altă parte, poate fi presetată doar la un mod de vizibilitate care este "public". ""

O clasă abstractă va moșteni automat clasa de obiecte. Aceasta, de fapt, înseamnă că sunt incluse metode precum clona () și egal (). Într-o interfață, nu este posibilă nicio moștenire a clasei obiectului. După aceasta, clasa abstractă are capacitatea de a avea un constructor, dar o interfață nu poate avea una.

Interfața din Java are de asemenea o funcție foarte importantă cu implementarea mai multor moșteniri, deoarece o clasă poate avea doar o clasă super. Deși poate exista o singură clasă superioară, ea poate fi implementată în orice număr de interfețe. Nu este posibil să existe mai multe moșteniri într-o clasă abstractă.

În performanță, interfețele tind să fie mai lente în implementare, spre deosebire de clasa abstractă, în principal datorită direcției suplimentare de găsire a metodei corespunzătoare într-o clasă. Diferența, totuși, a devenit mai lentă datorită mașinilor virtuale moderne Java care sunt în continuă actualizare.

Adăugarea unei metode într-o interfață necesită urmărirea tuturor claselor de implementare care implementează interfața specifică. Alternativ, puteți extinde interfața astfel încât să îi permită să aibă metode suplimentare. Dacă se întâmplă să se ocupe de o clasă abstractă, tot ce este necesar este să adăugați implementarea implicită a metodei și codul va continua să funcționeze. În măsura în care există diferențe între clasele abstracte și interfețe, este important de reținut că nu sunt rivali, dar diferențele menționate aici servesc pentru a se completa reciproc.

Rezumat

Câmpurile de clasă abstractă nu sunt statice sau finale, spre deosebire de interfața care are tabele statice și finale.

Nici un cod de implementare nu poate fi utilizat în interfețe în timp ce poate fi folosit în clasă abstractă.

  1. Vizibilitatea interfeței poate fi publică numai în timp ce vizibilitatea în clasă abstractă poate varia.

  2. O clasă abstractă va moșteni automat clasa de obiecte, dar nu este posibilă în interfață.

  3. Clasa abstractă este mai rapidă decât interfața în implementare.