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 FPO i IPO

    Razlika između FPO i IPO

    Ključna razlika: IPO, također poznat kao Inicijalna javna ponuda, je način prikupljanja sredstava navođenjem tvrtke na tržištu dionica. FPO su dionice koje se izdaju nakon što je društvo već uvršteno na burzu i prošlo kroz izdavanje IPO-a. Da bi se tvrtka uspostavila ili pokrenula, potrebna su joj sredstva. Čak i tvr
  • razlika između: Razlika između DDL i DML u tabličnom obliku

    Razlika između DDL i DML u tabličnom obliku

    Ključna razlika: DDL, koji se zalaže za Data Definition Language, uglavnom se koristi za definiranje sheme unutar baze podataka. Također definira odnos između unosa u bazi podataka. DML, koji se zalaže za Language Manipulation Language, također je jezik baze podataka. Ipak, za razliku od DDL-a, DML se može koristiti za umetanje, brisanje, oživljavanje i modificiranje podataka, a ne samo za određivanje. DDL i D
  • razlika između: Razlika između pisača i plotera

    Razlika između pisača i plotera

    Ključna razlika: Pisač je periferni uređaj koji stvara čvrstu kopiju digitalnih podataka prikazanih na zaslonu računala. Pisači se mogu koristiti za povezivanje s računalom putem USB-a ili bežično. Ploter je računalo pisač koji se koristi za ispis vektorske grafike. Iako su izvorno korišteni za ispis dizajniranih uz pomoć računala, u mnogim su aplikacijama zamijenjeni konvencionalnim pisačima. Ovih dana, cr
  • razlika između: Razlika između benzina i dizela

    Razlika između benzina i dizela

    Ključna razlika: Benzin, također poznat kao benzin, je prozirno gorivo dobiveno iz sirove nafte i koristi se kao gorivo u motorima s unutarnjim izgaranjem. Benzin je odvojen od sirove nafte od 40 ° C do 205 ° C. Dizel je tekuće gorivo koje se koristi u dizelskim motorima. Obično se dobiva iz sirove nafte. Naft
  • razlika između: Razlika između Jonskog i Kovalentnog Bonda

    Razlika između Jonskog i Kovalentnog Bonda

    Ključna razlika: ionska veza je kemijska veza između dva različita (tj. Metalnog i nemetalnog) atoma u kojima jedan atom daje elektron drugima. Kovalentna veza je druga jaka kemijska veza. Događa se slični atomi (tj. Dva nemetala). U kovalentnoj vezi dva atoma dolaze zajedno kako bi dijelila elektron, umjesto da atom uzima drugi iz drugog. Da
  • razlika između: Razlika između tvrdog drva i šperploče

    Razlika između tvrdog drva i šperploče

    Ključna razlika: Tvrdo drvo je drvo koje dolazi iz stabla angiosperma. To je vrsta stabla koje ima sjemenke koje su zatvorene, bilo u mahunama, ljusci, pokrivaču ili voću. Neki poznati tvrdo drveće uključuje javor, balsu, hrast, brijest, mahagonij i platan. S druge strane, šperploča je vrsta drvene ploče. Izrađu
  • razlika između: Razlika između modela Sony Xperia J i Nexus 4

    Razlika između modela Sony Xperia J i Nexus 4

    Ključna razlika: Xperia J je najavljena u listopadu 2012. kao jeftinija varijanta Xperia T, što je rezultiralo sličnim dizajnom u odnosu na T. Xperia J ima 4-inčni TFT zaslon osjetljiv na grebanje otporan na grebanje 245. Nexus 4 je Googleov četvrti Android smartphone s robnom markom Nexus. Proizveden je u suradnji s tvrtkom LG Electronics. Tel
  • razlika između: Razlika između mnogo i vrlo

    Razlika između mnogo i vrlo

    Ključna razlika: 'Mnogo' i 'vrlo' su dva termina koji se često koriste za impliciranje više ili viška. Međutim, ta se dva pojma razlikuju u načinu na koji se koriste. "Mnogo" se uglavnom koristi kao pridjev, dok se "vrlo" upotrebljava kao prilog. 'Mnogo' i 'vrlo' su dva pojma koja se često koriste za impliciranje više ili viška. Međutim
  • razlika između: Razlika između mase i materije

    Razlika između mase i materije

    Ključna razlika: Masa je podijeljena u tri vrste: inercijalna masa, aktivna gravitacijska masa i pasivna gravitacijska sila. Najčešći tip koji se koristi u fizici je inercijalna masa, koja je kvantitativna mjera otpornosti objekta na ubrzanje. U znanstvenom svijetu, materija se definira kao svaki objekt koji ima masu ili volumen (zauzima prostor). Ma

Izbor Urednika

Razlika između HTC First i Asus FonePad

Ključna razlika: HTC First je prvi telefon koji će se pojaviti na Facebook Home korisničkom sučelju. Telefon će se napajati Qualcomm MSM8930 Snapdragon 400 1.4 GHz Dual-core Krait i 1 GB RAM-a. Asus je najavio najnoviji phablet, Asus Fonepad. Fonepad je 7-inčni Android tablet koji korisnicima omogućuje i upućivanje telefonskih poziva postavljanjem uređaja na uho. Phablet