Interfață vs clasă abstractă vs clasă beton de Aakash Mallik Project Heuristics Medium
În timp ce începeți cu java ca limbă principală, singurul lucru care ar trebui să vă fie în minte este să înțelegeți fiecare caracteristică nativă pe care o poate oferi limba. Întrucât java se referă la clase, are câteva modele de design îngrijite pe care dezvoltatorii să le urmeze. Datoria dvs. ca programator responsabil este să puneți la îndoială aceste modele de proiectare destul de des; după ce toți inginerii care au construit java au planificat să-l proiecteze așa cum este acum pentru un motiv. Deci, fără a pierde mult timp pe bârfe, permite să ne scufundăm ....

Java fiind un limbaj orientat pe obiecte vă oferă fericirea de a vă scrie codul sub formă de clase reutilizabile. Acum, ca cuvânt reutilizabil a fost folosit, este acolo pentru un motiv. Reutilizarea codului nu începe prin crearea obiectelor din clase, începe cu mult înainte; în timp ce creați clase în sine.
Deci avem Interfață, clasa Abstract și clasa Concrete.
PS: Interfața nu este o clasă.
Interfața este un plan pentru clasa dvs. care poate fi folosit pentru a implementa o clasă (abstract sau nu); punctul este că interfața nu poate avea metode concrete. Metodele concrete sunt acele metode care au un anumit cod în interiorul lor; într-un singur cuvânt - implementat. Interfața dvs. poate avea membri statici și semnături ale metodelor. Exemplul de mai jos vă va ajuta să înțelegeți cum să scrieți o interfață.
Declarația seamănă mult cu o clasă, dar în interfață există câteva reguli stricte pe care trebuie să le urmați:
- Toate metodele pe care le declarați într-o interfață pot avea modificatori „statici”, „impliciți” sau „abstracte” (De la Java 8). Implicit sunt „abstract public”.
- De la Java 8, metodele pot fi implementate (pot avea un corp de cod) într-o interfață numai dacă este declarată statică sau implicit. Metodele abstracte nu pot avea un corp; tot ce pot avea este o semnătură de metodă așa cum se arată în exemplul de mai sus.
- Variabilele nu sunt permise în interfață. Prin urmare, orice declarație de date este „publică statică finală”; deci numai constante.
- Interfețele se pot extinde alte interfețe (una sau mai multe), dar nu clase (abstract sau nu).
- Interfețele nu pot fi instanțiate, deoarece nu sunt clase concrete.
- Metodele și constantele nu pot fi declarate „private”, metodele nu pot fi declarate „finale”.