Care este diferența dintre clasa abstractă și interfața în Java?



Acest articol vă va ajuta să înțelegeți diferența cheie dintre clasa abstractă și interfață în java cu ajutorul unui exemplu de program.

Clasele și interfețele abstracte sunt cele două blocuri principaledin . Deși ambele sunt utilizate în principal pentru abstractizare, ele sunt foarte diferite una de cealaltă și nu pot fi utilizate în mod interschimbabil. În acest articol, să ne dăm seama care este diferența dintre clasa abstractă și interfață în Java.

Subiectele discutate în acest articol sunt următoarele:





Pentru a înțelege diferențele dintre clasa abstractă și interfață în , trebuie să știți ce este o clasă abstractă și ce este o interfață. Deci, să începem prin a discuta care sunt acestea.

cel mai bun ide Java pentru Linux

Ce este clasa abstractă în Java?

În orice limbaj de programare, abstractizare înseamnă a ascunde detaliile irelevante de la utilizator pentru a se concentra doar asupra detaliilor esențiale pentru a crește eficiența, reducând astfel complexitatea. În Java, abstractizarea se realizează folosind clase abstracte . O clasă abstractă surprinde caracteristicile comune ale subclaselor și poate conține sau nu orice metodă abstractă. Nu poate fi instanțiat, dar poate fi folosit doar ca superclasă de către subclasele sale. Iată un exemplu de program care demonstrează clasa abstractă:



Notă: Un metoda abstractă , este o metodă care nu este implementată și adaugăincompletitudine la clasă .

pachetul MyPackage // clasa abstractă clasă abstractă Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // declarați metode non-abstracte // are implementare implicită public void BasicInfo (String details) {Sistem. out.println (this.AnimalName + '' + details)} // metode abstracte care vor fi // implementate de subclasa sa (e) abstract public void habitat () abstract public void respiration ()} clasă Terestru extinde Animal {// constructor Terestru (String name) {super (name)} @Override public void habitat () {System.out.println ('leave on land and')} @Override public void respiration () {System.out.println ('respire prin plămâni sau trahee. ')}} clasa Aquatic extends Animal {// constructor Aquatic (String name) {super (name)} @Override public void habitat () {System.out.println (' Se lasă în apă și ') } @Override public void respiration () {System.out.println ('respire prin branhii sau pielea lor.')}} Clasă AbstractClassDemo {public static voi d main (String [] args) {// crearea obiectului clasei Terestre // și utilizarea referinței clasei Animal. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('sunt ființe terestre, ele') object1.habitat () object1.respiration () System.out.println ('') // crearea obiectelor din clasa cerc Animal object2 = new Aquatic ('Pești') object2.BasicInfo ('sunt ființe aqautice, ele') object2.habitat () object2.respiration ()}}

Ieșire

Oamenii sunt ființe terestre, pleacă pe uscat și respiră prin plămâni sau trahee. Peștii sunt ființe aqautice, pleacă în apă și respiră prin branhii sau prin pielea lor.

Informatii de baza () este o metodă partajată de Terestru și Acvatic clase. De cand Clasa de animale nu poate fi inițiat, creăm obiectele Terestru și Acvatic cursuri în scop de programare. În continuare, avem interfețe.



Interfață în Java

Un alt mod de realizare abstractizare în Java se folosește interfețe .O interfață este o colecție de metode abstracte, nu are niciun concret , spre deosebire de o clasă abstractă. Dar, spre deosebire de clasa abstractă, o interfață oferă abstractizare completă în Java. Poate avea atât metode cât și variabile la fel ca o clasă. Cu toate acestea, metodele declarate într-o interfață sunt abstracte în mod implicit.Iată un demonstrând clasa abstractă:

pachet Interfața MyPackage Animale {// metode abstracte void habitat () void respiration ()} clasa TerrestrialA implementează Animals {String AnimalName = '' // constructor TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override respirația publică a vidului () {System.out.println ('respire prin plămâni sau trahee.')}} Clasa AquaticA implementează Animals {String AnimalName = '' // constructor AquaticA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('respire prin branhii sau pielea lor.')}} Clasa JavaInterfaceDemo {public static void main (String [] args) {// crearea obiectului clasei Terestre // și utilizarea referinței clasei Animal . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // crearea obiectelor din clasa cercului Animals object2 = new AquaticA ('Pești') object2.habitat () object2.respiration ()}}

Ieșire

Oamenii pleacă pe uscat și respiră prin plămâni sau trahee. Peștii lasă în apă și respiră prin branhii sau prin pielea lor.

Dacă nu aveți niciun cod comun între dvs. clase , apoi puteți alege interfața. O interfață seamănă mai degrabă cu planul unei clase, deoarece nu are metode non-abstracte.

Din conținutul de mai sus, este posibil să fi observat diferența cheie dintre clasa abstractă și interfața din . Ceea ce este, spre deosebire de clasa abstractă, o interfață oferă completă abstractizare în Java. Acum să mergem mai departe și să enumerăm alte diferențe.

Clasa abstractă vs interfață

Tabelul de mai jos enumeră diferențele cheie dintre clasa abstractă și interfață.

Parametru Clasa abstractă Interfață

Implementare metodă implicită

Poate avea implementarea implicită a metodei

Interfețele oferă abstracție pură și nu pot avea deloc implementare

Variabile

Poate conține variabile non-finale.

Variabilele declarate într-o interfață sunt în mod implicit finale

combina codul de sortare c ++

Cuvânt cheie folosit

O clasă abstractă poate fi extinsă utilizând cuvântul cheie „extends

Interfața trebuie să fie implementată utilizând cuvinte cheie ïmplements

Modificatori de acces

Poate saau modificator public, protejat, privat și implicit

Metodele de interfață sunt publice în mod implicit. nu puteți utiliza niciun alt modificator de acces cu acesta

Viteza de implementare

Este mai rapid decât interfața

O interfață este ceva mai lentă și necesită o indirectare suplimentară

Clasa normală

Poate extinde o singură clasă abstractă

c vs c ++ vs java

Poate implementa mai multe interfețe

Constructori

O clasă abstractă poate avea constructori

O interfață nu poate avea constructori

Moștenirea multiplă

O clasă abstractă poate extinde o altă clasă și poate implementa mai multe interfețe Java

Interfața poate extinde doar o altă interfață Java

Ei bine, acum diferențele cheie dintre clasa abstractă și interfață în Java. Dar, cum decideți când să utilizați care dintre acestea două?

Când se folosește Abstract Class și când se folosește interfața?

Luați în considerare utilizarea claselor abstracte în următoarele cazuri:

  • Dacă aveți câteva clase conexe care trebuie să împărtășească aceleași linii de cod
  • Când doriți să definiți câmpuri nestatice sau non-finale
  • Când existămetode sau câmpurisau cere modificatori de acces altele decât cele publice (cum ar fi protejat și privat)

Luați în considerare utilizarea interfețelor în următoarele cazuri:

  • Când vrei să realizezi abstractizare pură
  • Dacă vrei să angajezi multiplu , adicăimplementați mai multe interfețe
  • Când doriți să specificați comportamentul unui anumit tip de date, dar nu vă îngrijorează cine pune în aplicare comportamentul acestuia.

Acest lucru ne aduce la sfârșitul acestui articol. Am acoperit una dintre cele mai frecvente întrebări Java din Interviu, care este diferența dintre clasa abstractă și interfața în Java.

Asigurați-vă că exersați cât mai mult posibil și reveniți la experiență.

Verificați de Edureka, o companie de învățare online de încredere, cu o rețea de peste 250.000 de elevi mulțumiți răspândiți pe tot globul. Suntem aici pentru a vă ajuta cu fiecare pas din călătoria dvs., pentru a deveni o afară de întrebările de interviuri java, venim cu un curriculum care este conceput pentru studenți și profesioniști care doresc să fie un dezvoltator Java.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii a acestei „interfețe java Map” articol și vă vom răspunde cât mai curând posibil.