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 -
- Što je apstraktni razred u Javi?
- Sučelje u Javi
- Apstraktna klasa vs sučelje
- Kada koristiti sažetak klase i kada koristiti sučelje?
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.