Koja je razlika između klase sažetka i sučelja u Javi?



Ovaj članak pomoći će vam da shvatite ključnu razliku između apstraktne klase i sučelja u javi uz pomoć primjera programa.

Apstraktne klase i sučelja dva su glavna gradivna blokaod . Iako se oba primarno koriste za apstrakciju, međusobno se vrlo razlikuju i ne mogu se koristiti naizmjenično. U ovom ćemo članku shvatiti koja je razlika između apstraktne klase i sučelja u Javi.

Teme o kojima se raspravlja u ovom članku su sljedeće:





kako koristiti utičnice u javi -

Da bi se razumjele razlike između apstraktne klase i sučelja u , morate znati što je apstraktna klasa i što je sučelje. Pa, krenimo s raspravom što su to.

Što je sažetak klase u Javi?

U bilo kojem programskom jeziku, apstrakcija Podrazumijeva skrivanje nebitnih detalja od korisnika kako bi se usredotočio samo na bitne detalje kako bi se povećala učinkovitost i smanjila složenost. U Javi se apstrakcija postiže pomoću apstraktna nastava . Apstraktna klasa obuhvaća zajedničke karakteristike potklasa i može sadržavati bilo koju apstraktnu metodu ili ne. Ne može se instancirati, ali se može koristiti kao superklasa samo u svojim podrazredima. Evo primjera programa koji prikazuje apstraktnu nastavu:



Bilješka: An apstraktna metoda , je metoda koja nije implementirana na mjestu i dodajenepotpunost do razred .

paket MyPackage // apstraktna klasa sažetak klase Animal {String AnimalName = '' Animal (naziv niza) {this.AnimalName = name} // deklarirati apstraktne metode // ima zadanu implementaciju javna void BasicInfo (detalji niza) {System. out.println (this.AnimalName + '' + detalji)} // apstraktne metode koje će se // implementirati u svojim podrazredima (abstraktima) javno prazno stanište () apstraktno javno prazno disanje ()} klasa Zemaljski proteže se Životinja {// konstruktor Zemaljski (naziv niza) {super (ime)} @Preuzmi javno prazno stanište () {System.out.println ('ostavi na kopnu i')} @Preuzmi javno prazno disanje () {System.out.println ('respire kroz pluća ili dušnik. ')}} klasa Aquatic proširuje Animal {// konstruktor Aquatic (naziv niza) {super (ime)} @ Nadjačaj javno prazno stanište () {System.out.println (' Ostavlja u vodi i ') } @Override javno disanje praznina () {System.out.println ('disanje kroz škrge ili njihovu kožu.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// stvaranje objekta zemaljske klase // i korištenje reference klase Animal. Životinjski objekt1 = novi zemaljski ('ljudi') objekt1.BasicInfo ('su kopnena bića, oni') object1.habitat () object1.respiration () System.out.println ('') // stvaranje objekata klase kruga Animal object2 = new Aquatic ('Fishes') object2.BasicInfo ('su vodena bića, ona') object2.habitat () object2.respiration ()}}

Izlaz

Ljudi su kopnena bića, napuštaju kopno i dišu kroz pluća ili dušnik. Ribe su vodena bića, ona ih ostavlja u vodi i odmara kroz škrge ili njihovu kožu.

The Osnovne informacije () je metoda koju dijele Zemaljski i Vodeni razreda. Od Klasa životinja ne može se pokrenuti, mi stvaramo objekte od Zemaljski i Vodeni satovi u svrhu programiranja. Dalje, imamo sučelja.



Sučelje u Javi

Drugi način postizanja apstrakcija u Javi je pomoću sučelja .Sučelje je skup apstraktnih metoda, ono nema nikakvih konkretnih rezultata , za razliku od apstraktne klase. Ali za razliku od apstraktne klase, sučelje pruža potpunu apstrakciju u Javi. Može imati i metode i varijable poput klase. Međutim, metode deklarirane u sučelju su prema zadanim postavkama apstraktne.Evo pokazivanje apstraktne klase:

paket MyPackage sučelje Životinje {// apstraktne metode void habitat () void respiration ()} klasa TerrestrialA implementira Animals {String AnimalName = '' // konstruktor TerrestrialA (String name) {this.AnimalName = name} @ Override public void habitat () {System.out.println (this.AnimalName + 'ostavite na kopnu i')} @ Nadjačajte javno disanje praznina () {System.out.println ('disanje kroz pluća ili dušnik.')}} Klasa AquaticA provodi životinje {String AnimalName = '' // konstruktor AquaticA (naziv niza) {this.AnimalName = name} @Prevladati javno prazno stanište () {System.out.println (this.AnimalName + 'ostaviti u vodi i')} @ Nadjačati javno prazno disanje () {System.out.println ('disanje kroz škrge ili njihovu kožu.')}} Klasa JavaInterfaceDemo {public static void main (String [] args) {// izrada predmeta zemaljske klase // i korištenje reference klase Animal . Životinje object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // stvaranje predmeta klase kruga Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Izlaz

Ljudi odlaze na kopno i dišu kroz pluća ili dušnik. Ribe ostavljaju u vodi i odmaraju se kroz škrge ili kožu.

Ako nemate zajednički kod između vašeg razreda , onda možete ići na sučelje. Sučelje je više poput nacrta klase jer nema nikakve apstraktne metode.

Iz gore navedenog sadržaja možda ste primijetili ključnu razliku između apstraktne klase i sučelja u . Što je, za razliku od apstraktne klase, sučelje pruža puno apstrakcija na Javi. Ajmo sada i nabrojimo druge razlike.

Apstraktna klasa vs sučelje

Tablica u nastavku navodi ključne razlike između apstraktne klase i sučelja.

Parametar Sažetak klase Sučelje

Primjena zadane metode

Može imati zadanu implementaciju metode

Sučelja pružaju čistu apstrakciju i uopće ne mogu imati implementaciju

Varijable

Može sadržavati ne-konačne varijable.

Varijable deklarirane u sučelju su prema zadanim postavkama konačne

Ključna riječ korištena

Apstraktni razred može se proširiti pomoću ključne riječi „extends

Sučelje treba implementirati pomoću primjera ključne riječi

Modifikatori pristupa

Limenkaimaju javni, zaštićeni, privatni i zadani modifikator

Metode sučelja su prema zadanim postavkama javne. s njim ne možete koristiti bilo koji drugi modifikator pristupa

Brzina provedbe

Brži je od sučelja

što su tokeni u javi

Sučelje je nešto sporije i zahtijeva dodatnu indirektnost

Uobičajena klasa

Može proširiti samo jedan apstraktni razred

def __init__ python

Može implementirati više sučelja

Konstruktori

Apstraktna klasa može imati konstruktore

Sučelje ne može imati konstruktore

Višestruko nasljeđivanje

Apstraktna klasa može proširiti drugu klasu i može implementirati više Java sučelja

Sučelje može proširiti samo drugo sučelje Java

Eto, sad ste ključne razlike između apstraktne klase i sučelja u Javi. Ali, kako odlučiti kada ćete koristiti koju od ove dvije?

Kada koristiti sažetak klase i kada koristiti sučelje?

Razmislite o korištenju apstraktnih klasa u sljedećim slučajevima:

  • Ako imate neke srodne razrede koji trebaju dijeliti iste linije koda
  • Kada želite definirati nestatična ili ne-konačna polja
  • Kad ih imametode ili poljaili zahtijevati modifikatori pristupa osim javnog (poput zaštićenih i privatnih)

Razmislite o upotrebi sučelja u sljedećim slučajevima:

  • Kad želite postići čista apstrakcija
  • Ako želite zaposliti višestruko , tj.implementirati više od jednog sučelja
  • Kada želite odrediti ponašanje određene vrste podataka, ali ne brinući se tko implementira njegovo ponašanje.

Ovo nas dovodi do kraja ovog članka. Obradio sam jedno od najčešće postavljanih Java pitanja u Intervjuu, a to je razlika između apstraktne klase i sučelja u Javi.

Obavezno vježbajte što je više moguće i vratite svoje iskustvo.

Pogledajte Edureka, pouzdane tvrtke za internetsko učenje s mrežom od više od 250 000 zadovoljnih učenika raširenih širom svijeta. Ovdje smo da vam pomognemo u svakom koraku na putovanju, jer osim što postajete pitanja za ovaj intervju za javu, donosimo kurikulum koji je dizajniran za studente i profesionalce koji žele biti programer za Javu.

Imate pitanje za nas? Molimo navedite ga u odjeljku za komentare ovog ‘sučelja java karte’ članka i javit ćemo vam se u najkraćem mogućem roku.