Razlika između sučelja i apstraktne klase u Javi

Ključna razlika: sučelje ili protokol je uobičajeni način koji omogućuje nepovezanim objektima međusobno komuniciranje. On predstavlja dogovoreno ponašanje koje olakšava interakciju između dva objekta. Apstraktna klasa je klasa objekata koji se ne mogu instancirati niti postaviti instancu objekta. Ova klasa možda nema implementaciju ili može imati nepotpunu implementaciju.

Java, C ++, C # su svi komplicirani programski jezici koji zahtijevaju detaljnu studiju i razumijevanje kako bi mogli raditi. Postoji mnogo različitih metoda koje se koriste na tim jezicima i odlučuju kako će jezik funkcionirati. Interface i Abstract Class su dva zbunjujuća koncepta koji su dio OOP-a (objektno orijentirano programiranje). Ove dvije se mogu koristiti pojedinačno ili zajedno. Ova dva su potpuno različita i koriste se u različitim slučajevima.

Java je programski jezik, na koji je utjecao jezik C. Većinu sintakse proizlazi iz C i C ++, ali ima manje objekata niže razine od bilo koje. Java je programski jezik opće namjene koji je dizajniran tako da ima manje ovisnosti o implementaciji u odnosu na prethodne jezike. To je istodobno, na temelju klasa i objektno orijentiranog jezika.

Java je razvio James Gosling u tvrtki Sun Microsystems, a izdana je 1995. godine. Izvorno je izdana kao temeljna komponenta Java platforme Sun Microsystems. Sun je od tada ponovno licencirao većinu svojih Java tehnologija pod GNU Općom javnom licencom. To znači da je sva tehnologija licencirana pod GNU Općom javnom licencom otvorenog koda i općenito dostupna besplatno. Sun Microsystems se na kraju spojio u Oracle Corporation. Od 2012. godine Java je postala jedan od najpopularnijih programskih jezika za upotrebu. To posebno vrijedi za klijent-poslužitelj web aplikacije. Mnogi drugi sustavi razvili su alternativne implementacije Sun tehnologija, kao što su GNU Compiler za Java i GNU Classpath.

Sučelje ili protokol je uobičajeni način koji omogućuje nepovezanim objektima međusobno komuniciranje. On predstavlja dogovoreno ponašanje koje olakšava interakciju između dva objekta. Sučelje drži ključ za različite akcije koje se provode i služi kao veza između dva različita objekta. Ako je klasa objekata izložena sučelju, klasa će morati slijediti ponašanje koje implementira sučelje. Obično sučelja sadrže samo konstantne deklaracije i potpise metoda. Svako sučelje koje implementira određeno sučelje mora primijeniti sve metode spomenute u sučelju ili biti deklarirano kao apstraktna klasa. U Javi, bilo koji objekt može se definirati kao sučelje, ako je taj objekt nula ili drži klasu u kojoj implementira to sučelje. Moguće je implementirati višestruka sučelja u jednu klasu u Javi pomoću implementirati ključne riječi.

Apstraktna klasa je klasa objekata koji se ne mogu instancirati niti postaviti instancu objekta. Ova klasa možda nema implementaciju ili može imati nepotpunu implementaciju. Također može imati apstraktne metode ili svojstva koja su zajednička svim pod-klasama. U nekim programskim jezicima, apstraktni tipovi bez implementacije poznati su kao sučelja. U Javi se apstraktni tip može stvoriti pomoću ključne riječi 'abstract' u definiciji klase. Svrha je imati apstraktnu klasu za postavljanje svih metoda koje nisu implementirane u apstraktnu klasu i prepustiti podklasi da odredi kako implementirati te klase. Ako klasa ima jednu apstraktnu metodu, klasa mora biti deklarirana kao apstraktna klasa, iako ne treba imati barem jednu metodu za deklariranje sažetka razreda.

Malliktalksjava.in navodi glavne razlike između sučelja i apstrakta kao:

  • Apstraktna klasa ima konstruktora, ali sučelje ne.
  • Apstraktne klase mogu imati implementacije za neke od svojih članova (Methods), ali sučelje ne može imati implementaciju ni za jednog člana.
  • Apstraktna nastava bi trebala imati podklase koji bi bili beskorisni.
  • Sučelja moraju imati implementacije drugih klasa koje će biti beskorisne
  • Samo sučelje može proširiti drugo sučelje, ali svaka klasa može proširiti apstraktnu klasu.
  • Sve su varijable u sučeljima konačne
  • Sučelja pružaju oblik višestrukog nasljeđivanja. Klasa može proširiti samo još jednu klasu.
  • Sučelja su ograničena na javne metode i konstante bez implementacije. Apstraktne klase mogu imati djelomičnu implementaciju, zaštićene dijelove, statičke metode itd.
  • Klasa može implementirati nekoliko sučelja. Ali u slučaju apstraktne klase, klasa može proširiti samo jedan apstraktni razred.
  • Sučelja su spora jer zahtijeva dodatnu indirektnost kako bi se pronašla odgovarajuća metoda u stvarnoj klasi. Nastava apstrakta je brza.
  • Modifikator pristupačnosti (javno / privatno / interno) dopušten je za apstraktnu klasu. Sučelje ne dopušta modifikator pristupačnosti
  • Apstraktna klasa može sadržavati potpune ili nepotpune metode. Sučelja mogu sadržavati samo potpis metode, ali ne i tijelo. Tako apstraktna klasa može implementirati metode, ali sučelje ne može implementirati metode.
  • Apstraktna klasa može sadržavati polja, konstruktore, ili destruktore i svojstva implementacije. Sučelje ne može sadržavati polja, konstruktore ili destruktore i ima samo potpis vlasništva, ali nema implementacije.
  • Različiti modifikatori pristupa kao što su sažetak, zaštita, interni, javni, virtualni itd. Korisni su u apstraktnim razredima, ali ne u sučeljima.
  • Područje apstrakta je do izvedene klase.
  • Opseg sučelja je do bilo koje razine njegovog lanca nasljeđivanja.

Informacije za tablicu su zahvaljujući codeproject.com i mindprod.com

Sučelje

Klasa sažetaka

Višestruko nasljeđivanje

Klasa može naslijediti nekoliko sučelja.

Klasa može naslijediti samo jednu apstraktnu klasu.

Zadana implementacija

Sučelje ne može pružiti nikakav kod, samo potpis.

Apstraktna klasa može osigurati potpuni, zadani kôd i / ili samo detalje koji se moraju nadjačati.

Modifikatori pristupa

Sučelje ne može imati modifikatore pristupa za subs, funkcije, svojstva itd. Sve se pretpostavlja kao javno.

Apstraktna klasa može sadržavati modifikatore pristupa za subs, funkcije, svojstva.

Jezgra u odnosu na periferne

Sučelja se koriste za definiranje perifernih sposobnosti klase. Drugim riječima, i čovjek i vozilo mogu naslijediti od sučelja koje je moguće umetnuti.

Apstraktna klasa definira temeljni identitet klase i on se koristi za objekte istog tipa.

Homogenost

Ako različite implementacije dijele samo potpise metode, bolje je koristiti sučelja.

Ako su različite implementacije iste vrste i koriste zajedničko ponašanje ili status, onda je apstraktna klasa bolje koristiti.

Ubrzati

Zahtijeva više vremena za pronalaženje stvarne metode u odgovarajućim klasama.

Brzo

Dodavanje funkcionalnosti

Ako dodamo novu metodu sučelju, moramo pronaći sve implementacije sučelja i definirati implementaciju za novu metodu.

Ako dodamo novu metodu apstraktnoj klasi, tada imamo opciju pružanja zadane implementacije i stoga bi sav postojeći kôd mogao ispravno raditi.

Polja i konstante

Polja ne mogu biti definirana u sučeljima.

Apstraktna klasa može imati definirana polja i konstante.

Sažetost

Deklaracije konstanta u sučelju su sve pretpostavljene javne statičke konačne.

Dijeljeni kod može se dodati u apstraktnu klasu.

konstante

Samo statične konačne konstante mogu ih koristiti bez kvalifikacija u klasama koje implementiraju sučelje.

Moguće su i instance i statičke konstante. I statički i primjerni intialiser kod su također moguće izračunati konstante.

Pogodnost treće strane

Implementacija sučelja može se dodati bilo kojem postojećem razredu treće strane.

Klasa treće strane mora biti ponovno napisana kako bi se proširila samo iz apstraktne klase.

is-a vs. -able ili can-do

Sučelja se često koriste za opisivanje perifernih sposobnosti klase, a ne za njezin središnji identitet, npr. Klasa Automobile može implementirati sučelje za recikliranje, koje bi se moglo primijeniti na mnoge inače potpuno nepovezane objekte.

Apstraktna klasa definira temeljni identitet njegovih potomaka. Implementirana sučelja nabrajaju opće stvari koje klasa može učiniti, a ne ono što je klasa.

U kontekstu Java, korisnici bi obično trebali implementirati Runnable sučelje umjesto proširivanja Thread-a, jer oni zapravo nisu zainteresirani za pružanje neke nove Thread funkcionalnosti, oni obično samo žele da neki kod ima sposobnost samostalnog pokretanja. Žele stvoriti nešto što se može izvoditi u niti, a ne u novoj vrsti niti. Slična je-a vs ima-raspravu dolazi kada odlučite naslijediti ili delegirati.

Uključiti

Korisnik može napisati novi zamjenski modul za sučelje koje ne sadrži niti jedan štapić koda koji je zajednički s postojećim implementacijama. Kada korisnik implementira sučelje, oni počinju od nule bez ikakve zadane implementacije. Korisnik mora pribaviti alate iz drugih klasa; ništa ne dolazi sa sučeljem osim nekoliko konstanti. To korisniku daje slobodu da implementira radikalno drugačiji unutarnji dizajn.

Korisnik mora koristiti apstraktnu klasu kao-je za bazu koda, sa svom pratećom prtljagom, dobrom ili lošom. Autor apstraktne klase je korisniku nametnuo strukturu.

Održavanje

Ako kod klijenta govori samo u smislu sučelja, možete jednostavno promijeniti konkretnu implementaciju iza nje, koristeći tvorničku metodu.

Ako kod klijenta razgovara samo u smislu apstraktne klase, lako možete promijeniti konkretnu implementaciju iza nje, koristeći tvorničku metodu.

Preporučeno

Vezani Članci

  • razlika između: Razlika između globalizacije i kapitalizma

    Razlika između globalizacije i kapitalizma

    Ključna razlika: Globalizacija je proces međunarodne integracije, gdje se u svijetu sve više približava i razmjenjuje više ideja, pogleda, proizvoda, misli i kulture. Kapitalizam je ekonomski sustav koji se temelji na privatnom vlasništvu u smislu proizvodnje i stvaranja dobara ili usluga za profit. S po
  • razlika između: Razlika između diskriminacije i legalizacije

    Razlika između diskriminacije i legalizacije

    Ključna razlika: Dekriminalizacija je proces koji više ne razmatra nešto kao zločin. Dekriminalizacija nečega može uključivati ​​smanjenje kaznenih kazni, a ne njihovo potpuno uklanjanje. Legalizacija je, s druge strane, proces uklanjanja kaznenih sankcija iz nečega. U većini slučajeva to uključuje gotovo sve kazne. Pojmovi Dekri
  • razlika između: Razlika između preljuba i bigamije

    Razlika između preljuba i bigamije

    Ključna razlika: Preljub se odnosi na namjeravanu seksualnu vezu između oženjene osobe i osobe, a ne njegova ili njezina bračnog druga. Bigamy se odnosi na čin vjenčanja, dok je prvi brak valjan. Pojam preljuba potječe od staro-francuske riječi 'avouterie', što znači 'dobrovoljno kršenje bračne postelje'. Koristi se
  • razlika između: Razlika između Dell XPS 10 i Nexus 7

    Razlika između Dell XPS 10 i Nexus 7

    Ključna razlika: Dell XPS 10 je 10, 1-inčni tablet koji dolazi s tipkovnicom Dock za prijenosno računalo. Zaslon je HD Display kapacitivni multi-touch zaslon, s 1366 x 768 piksela i gustoće piksela od približno 155 ppi. Nexus 7 je tabletno računalo s operativnim sustavom Android 4.1 (također nazvan Jelly Bean). Razvi
  • razlika između: Razlika između MPEG7 i MPEG21

    Razlika između MPEG7 i MPEG21

    Ključna razlika: MPEG je kratica za Moving Picture Experts Group. MPEG7 je izdan 2002. godine i predstavlja standard za opis multimedijskog sadržaja. Različito je da se prethodni formati, kao i MPEG-1, MPEG-2 i MPEG-4, ne bave kodiranjem pokretnih slika i zvuka. Zapravo, MPEG7 omogućuje ugrađivanje metapodataka u audio i video datoteke. MPE
  • razlika između: Razlika između mahagonija i tikovine

    Razlika između mahagonija i tikovine

    Ključna razlika: mahagonij je tamno crveno smeđe obojeno tropsko drvo staro u Južnoj Americi, Africi i Srednjoj Americi. Tikovina je čvrsto zrnato tvrdo drvo koje je žuto-tamno smeđe boje. Ona je autohtona u Indoneziji, Indiji i Srednjoj Americi. Mahogany je čvrsto tvrdo drvo koje sadrži crvenu nijansu. Zbog s
  • razlika između: Razlika između Vidhan Sabha i Vidhan Parishad

    Razlika između Vidhan Sabha i Vidhan Parishad

    Ključna razlika: Vidhan Sabha ili Zakonodavna skupština je donji dom u šest država koje imaju dvodomno zakonodavstvo ili jedinu kuću u ostalim jednodomnim državama. Članovi ove kuće su direktni predstavnici naroda te države, a biraju ih i punoljetni građani te države. Vidhan Parishad ili Zakonodavno vijeće je gornji dom u šest država koje imaju dvodomno zakonodavstvo. Članove Vidh
  • razlika između: Razlika između Galaxy S4, Xperia Z i ZL

    Razlika između Galaxy S4, Xperia Z i ZL

    Ključna razlika: Samsung Galaxy S4 je nasljednik vrlo popularnog Samsung Galaxy S3. Tvrtka se može pohvaliti novim značajkama u nešto manjem i elegantnijem dizajnu. Zaslon telefona je povećan na zapanjujućih gotovo 5 inča uz samo neznatno smanjenje veličine telefona. Zaslon je full HD Super AMOLED kapacitivni zaslon osjetljiv na dodir koji omogućuje veću razlučivost od 1080 piksela, gotovo 441ppi gustoće. Sony Xperi
  • razlika između: Razlika između modela Nokia Lumia 720 i LG Nexus 4

    Razlika između modela Nokia Lumia 720 i LG Nexus 4

    Ključna razlika: Nokia Lumia 720 je jedan od najnovijih telefona koji su slični svom vodećem modelu Lumia 920. Lumia 720 dolazi s 1 GHz dual-core Snapdragon S4 procesorom s 512 MB RAM-a i 8 GB internog prostora za pohranu koji se može nadograditi na 64 HR. Telefon je dostupan s 6, 7 MP primarnom kamerom s Carl Zeiss optikom, autofokusom i LED bljeskalicom. Ta

Izbor Urednika

Razlika između arheologije i antropologije

Ključna razlika: Arheologija je grana znanosti posvećena istraživanju, otkrivanju i razumijevanju materijalnih ostataka koje ljudi ostavljaju iza sebe. Antropologija je proučavanje svih aspekata ljudskih bića, uključujući njihov razvoj i povezanost s drugim životinjama, osobito primatima. Arheologija je dala mali broj doprinosa općem području antropologije s obzirom na objašnjavanje kulturnih sličnosti i razlika. Obojica su