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:
- Ce este o clasă abstractă în Java?
- Interfață în Java
- Clasa abstractă vs interfață
- Când se folosește Abstract Class și când se folosește interfața?
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.