Forskjell mellom grensesnitt og abstrakt klasse i Java

Nøkkelforskjell: Grensesnitt eller en protokoll er en vanlig måte som tillater at ikke-relaterte objekter kommuniserer med hverandre. Den representerer en avtalt oppførsel som letter samspillet mellom de to objektene. En abstrakt klasse er en klasse av objekter som ikke kan bli instantiated eller sette opp en forekomst av et objekt. Denne klassen kan ha ingen implementering eller kan ha ufullstendig implementering.

Java, C ++, C # er alle kompliserte programmeringsspråk som krever en detaljert studie og forståelse for å kunne jobbe med. Det finnes mange forskjellige metoder som brukes på disse språkene som bestemmer hvordan språket skal fungere. Grensesnitt og abstrakt klasse er to forvirrende konsepter som er en del av OOP (objektorientert programmering). Disse to kan brukes enkeltvis eller sammen med hverandre. Disse to er helt forskjellige fra hverandre og brukes i forskjellige tilfeller.

Java er et programmeringsspråk, som har blitt påvirket av C-språket. Det henter mye av sin syntaks fra C og C ++, men det har færre lavnivå fasiliteter enn heller. Java er et generell programmeringsspråk som er utformet for å ha færre implementasjonsavhengigheter i forhold til tidligere språk. Det er samtidig, klassebasert og et objektorientert språk.

Java ble utviklet av James Gosling ved Sun Microsystems og ble utgitt i 1995. Den ble opprinnelig utgitt som en sentral komponent i Sun Microsystems Java-plattform. Sun har siden lisensiert det meste av sin Java-teknologi under GNU General Public License. Dette betyr at all teknologi som er lisensiert under GNU General Public License, er åpen kildekode og generelt tilgjengelig uten omkostninger. Sun Microsystems sluttet seg til Oracle Corporation. Fra og med 2012 har Java blitt et av de mest populære programmeringsspråkene for bruk. Dette gjelder spesielt for klient-server webapplikasjoner. Mange andre systemer har utviklet alternative implementeringer av Sun-teknologier, for eksempel GNU Compiler for Java og GNU Classpath.

Grensesnitt eller en protokoll er en vanlig måte som gjør det mulig for ikke-relaterte objekter å kommunisere med hverandre. Den representerer en avtalt oppførsel som letter samspillet mellom de to objektene. Grensesnittet har nøkkelen til de ulike tiltakene som implementeres og fungerer som en kobling mellom de to forskjellige objektene. Hvis en klasse objekter blir utsatt for grensesnittet, må klassen følge oppførelsen som er implementert av grensesnittet. Vanligvis inneholder grensesnitt bare konstante deklarasjoner og metodenes signaturer. Ethvert grensesnitt som implementerer et bestemt grensesnitt, må bruke alle metodene nevnt i grensesnittet eller bli erklært som en abstrakt klasse. I Java kan ethvert objekt defineres som et grensesnitt, hvis objektet er null eller holder en klasse der den implementerer det aktuelle grensesnittet. Man kan implementere flere grensesnitt til en enkelt klasse i Java ved hjelp av implementere søkeord.

En abstrakt klasse er en klasse av objekter som ikke kan bli instantiated eller sette opp en forekomst av et objekt. Denne klassen kan ha ingen implementering eller kan ha ufullstendig implementering. Det kan også ha abstrakte metoder eller egenskaper som deles av alle underklasser. I noen programmeringsspråk er abstrakte typer uten implementering kjent som grensesnitt. I Java kan en abstrakt type opprettes ved hjelp av søkeordet "abstrakt" i klasset definisjonen. Formålet med å ha en abstrakt klasse å plassere alle metodene som ikke er implementert i abstrakt klassen, og la det gå til underklassen for å bestemme hvordan man implementerer disse klassene. Hvis en klasse har en enkelt abstrakt metode, må klassen bli erklært som en abstrakt klasse, selv om man ikke trenger å ha minst en enkelt metode for å erklære en klasse abstrakt.

Malliktalksjava.in viser de store forskjellene mellom grensesnitt og abstrakt som:

  • Abstrakt klasse har konstruktøren, men grensesnittet gjør det ikke.
  • Abstrakte klasser kan ha implementeringer for noen av sine medlemmer (Methods), men grensesnittet kan ikke ha implementering for noen av sine medlemmer.
  • Abstrakte klasser bør ha underklasser annet som vil være ubrukelig.
  • Grensesnitt må ha implementeringer av andre klasser ellers som vil være ubrukelige
  • Bare et grensesnitt kan utvide et annet grensesnitt, men noen klasser kan forlenge en abstrakt klasse.
  • Alle variabler i grensesnitt er standard som standard
  • Grensesnitt gir en form for flere arv. En klasse kan utvide bare en annen klasse.
  • Grensesnitt er begrenset til offentlige metoder og konstanter uten implementering. Abstrakte klasser kan ha delvis implementering, beskyttede deler, statiske metoder, etc.
  • En klasse kan implementere flere grensesnitt. Men i tilfelle abstrakt klasse, kan en klasse utvide kun en abstrakt klasse.
  • Grensesnitt er treg da det krever ekstra innireksjon for å finne tilsvarende metode i selve klassen. Abstrakte klasser er raske.
  • Tilgjengelighet modifikator (offentlig / privat / intern) er tillatt for abstrakt klasse. Grensesnitt tillater ikke tilgjengelighetsmodifikator
  • En abstrakt klasse kan inneholde komplette eller ufullstendige metoder. Grensesnitt kan bare inneholde signatur av en metode, men ingen kropp. Dermed kan en abstrakt klasse implementere metoder, men et grensesnitt kan ikke implementere metoder.
  • En abstrakt klasse kan inneholde felt, konstruktører eller destruktorer og implementere egenskaper. Et grensesnitt kan ikke inneholde felt, konstruktører eller destruktorer, og det har bare egenskapens signatur, men ingen implementering.
  • Ulike tilgangsmodifikatorer som abstrakte, beskyttede, interne, offentlige, virtuelle osv. Er nyttige i abstrakte klasser, men ikke i grensesnitt.
  • Abstrakt omfang er opp til avledet klasse.
  • Grensesnittets omfang er opp til et hvilket som helst nivå i arvskjeden.

Informasjonen for tabellen er høflighet av codeproject.com og mindprod.com

Interface

Abstrakt klasse

Flere arv

En klasse kan arve flere grensesnitt.

En klasse kan arve bare en abstrakt klasse.

Standard implementering

Et grensesnitt kan ikke gi noen kode, bare signaturen.

En abstrakt klasse kan gi fullstendig, standardkode og / eller bare detaljene som må overskrides.

Tilgangsmodifiseringer

Et grensesnitt kan ikke ha tilgangsmodifiseringer for subs, funksjoner, egenskaper etc alt antas som offentlig.

En abstrakt klasse kan inneholde tilgangsmodifikatorer for subs, funksjoner, egenskaper.

Core vs Peripheral

Grensesnitt brukes til å definere perifere evner i en klasse. Med andre ord kan både menneske og kjøretøy arve fra et uavhengig grensesnitt.

En abstrakt klasse definerer kjerneidentiteten til en klasse og der den brukes til objekter av samme type.

homogenitet

Hvis ulike implementeringer bare deler metodesignaturer, er det bedre å bruke grensesnitt.

Hvis ulike implementeringer er av samme type og bruker vanlig oppførsel eller status, er abstrakt klasse bedre å bruke.

Hastighet

Krever mer tid for å finne den faktiske metoden i de tilsvarende klassene.

Rask

Legge til funksjonalitet

Hvis vi legger til en ny metode til et grensesnitt, må vi spore alle implementeringer av grensesnittet og definere implementering for den nye metoden.

Hvis vi legger til en ny metode i en abstrakt klasse, har vi muligheten til å levere standard implementering og derfor kan all eksisterende kode fungere skikkelig.

Felt og Konstanter

Ingen felt kan defineres i grensesnitt.

En abstrakt klasse kan ha felt og konstanter definert.

terseness

De konstante erklæringene i et grensesnitt er alle antatte offentlige statiske finaler.

Felles kode kan legges inn i en abstrakt klasse.

konstanter

Bare statiske endelige konstanter, kan bruke dem uten kvalifisering i klasser som implementerer grensesnittet.

Både forekomst og statiske konstanter er mulige. Både statisk og eksempel intialiser kode er også mulig å beregne konstantene.

Tredjeparts bekvemmelighet

Et grensesnitt implementering kan legges til en eksisterende tredjepart klasse.

En tredjepartsklasse må omskrives for å bare utvides fra abstraktklassen.

er-en vs. -bar eller can-do

Grensesnitt brukes ofte til å beskrive en klasses perifere evner, ikke dens sentrale identitet, f.eks. En Automobile-klasse kan implementere det resirkulerbare grensesnittet, som kan gjelde for mange ellers helt urelaterte objekter.

En abstrakt klasse definerer kjerneidentiteten til sine etterkommere. Implementerte grensesnitt teller de generelle tingene en klasse kan gjøre, ikke tingene en klasse er.

I en Java-kontekst bør brukerne vanligvis implementere Runnable-grensesnittet i stedet for å utvide Thread, fordi de ikke egentlig er interessert i å gi noen ny Trådfunksjonalitet, de vil normalt bare ha en kode som har mulighet til å kjøre selvstendig. De vil lage noe som kan kjøres i en tråd, ikke en ny type tråd. Den samme er-en vs-en debatt kommer opp når du bestemmer deg for å arve eller delegere.

Plugg inn

Brukeren kan skrive en ny erstatningsmodul for et grensesnitt som ikke inneholder en kodenavn som er felles med eksisterende implementeringer. Når brukeren implementerer grensesnittet, starter de fra bunnen av uten standard implementering. Brukeren må skaffe verktøy fra andre klasser; ingenting kommer med grensesnittet annet enn noen få konstanter. Dette gir brukeren frihet til å implementere en radikalt annen intern design.

Brukeren må bruke den abstrakte klassen som er for kodebase, med all sin tilhørende bagasje, bra eller dårlig. Den abstrakte klassen forfatteren har lagt struktur på brukeren.

Vedlikehold

Hvis klientkoden bare snakker i forhold til et grensesnitt, kan du enkelt endre den konkrete implementeringen bak den, ved hjelp av en fabrikkmetode.

Hvis klientkoden bare snakker i form av en abstrakt klasse, kan du enkelt endre den konkrete implementeringen bak den, ved hjelp av en fabrikkmetode.

Anbefalt

Relaterte Artikler

  • forskjell mellom: Forskjellen mellom venstre håndregel og høyre håndregel

    Forskjellen mellom venstre håndregel og høyre håndregel

    Hovedforskjell: Den venstre håndregelen og høyre håndregelen er typer visuelle mnemonikk som ble utviklet av John Ambrose Fleming i slutten av 1800-tallet. De er vant til å vise retningen til bevegelsen, feltet og strømmen. Venstre håndregel gjelder for elektriske motorer, mens høyre håndregel gjelder for generatorer. Den ve
  • forskjell mellom: Forskjellen mellom fasthet og avholdenhet

    Forskjellen mellom fasthet og avholdenhet

    Hovedforskjell: Fasting er når en person begrenser mengden mat som de inntar, inkluderer dette bare å ta en eller to små måltider i løpet av dagen, samt å avstå fra å spise snacks. Avhold er når en person avstår fra å spise / drikke visse typer mat, for eksempel kjøtt, melkeprodukter, alkohol, røyking etc. Fast og avh
  • forskjell mellom: Forskjellen mellom kontrolllinjen og den internasjonale grensen

    Forskjellen mellom kontrolllinjen og den internasjonale grensen

    Hovedforskjell: Den internasjonale grensen (IB) er India-Pakistan-grensen som fungerer som en grense mellom landene i India og Pakistan. Dette er den internasjonale grensen som er anerkjent av verden. Begrepet Line of Control (LOC) refererer til den militære kontrolllinjen mellom de indiske og pakistanske kontrollerte delene av den tidligere prinsstatens tilstand Jammu og Kashmir.
  • forskjell mellom: Forskjellen mellom Niger og Nigeria

    Forskjellen mellom Niger og Nigeria

    Hovedforskjell: Niger og Nigeria er to forskjellige land som ligger på kontinentet i Afrika. Niger er et land låst land i Vest-Afrika. Til sammenligning er Nigeria et kystland i Afrika. De er naboer som deler en grense. På grunn av hvordan lignende navnene er, antar mange folk at Niger og Nigeria er de samme og at navnene er variasjoner av hverandre. M
  • forskjell mellom: Forskjellen mellom gjenbruk og resirkulering

    Forskjellen mellom gjenbruk og resirkulering

    Nøkkelforskjell: Konseptet med gjenbruk er når et produkt som er nylig kjøpt, blir satt til en annen bruk etter at den første bruken er fullført. Gjenvinning er behandling av brukte materialer (avfall) til nye produkter for å forhindre avfall av potensielt nyttige materialer. De tre gyldne ordene for å redde planeten vår: redusere, gjenbruke og resirkulere. Disse
  • forskjell mellom: Forskjellen mellom Veibeskrivelse og Instruksjoner

    Forskjellen mellom Veibeskrivelse og Instruksjoner

    Hovedforskjell: Både, retninger og instruksjoner fungerer som retningslinjer. Hovedforskjellen mellom de to er at instruksjoner hovedsakelig er knyttet til instruksjon eller undervisning. Derfor er det gitt instruksjoner for å undervise noen noe. Veibeskrivelse er på den annen side i form av retningslinjer. D
  • forskjell mellom: Forskjellen mellom LG Optimus G Pro og HTC One

    Forskjellen mellom LG Optimus G Pro og HTC One

    Nøkkelforskjellen: LG Optimus G Pro har store oppdateringer til sin forgjenger, LG Optimus G. Enheten sporter en massiv 5, 5 tommers True Full HD IPS berøringsskjerm med multi-touch-funksjon og en piksel tetthet på 401 ppi. Under hetten er telefonen drevet av 1, 7 GHz Quad-core Snapdragon 600, noe som gjør den ganske rask og rask. HT
  • forskjell mellom: Forskjell mellom Alcatel One Touch Idol og Nokia Lumia 820

    Forskjell mellom Alcatel One Touch Idol og Nokia Lumia 820

    Hovedforskjell: Alcatel One Touch Idol er den offisielle mobilpartneren for filmen Iron Man 3. Den har en 4, 7 tommers IPS LCD kapasitiv berøringsskjerm med 16 millioner farger. Skjermen har en oppløsning på 540 x 960 piksler. Telefonen er drevet av en Dual-core 1 GHz MediaTek MTK 6577+ og en 512 MB RAM. E
  • forskjell mellom: Forskjell mellom læringsutbytte og læringsmål

    Forskjell mellom læringsutbytte og læringsmål

    Nøkkelforskjell: Læringsutbytte refererer til forventningene fra studenten ved slutten av kurset. På slutten av kurset tar mange lærere en prøve for å avgjøre hva studenten har lært av kursplanen. Læringsmål er beskrevet som hva studenten kan forvente fra læreren ved slutten av kurset. Det er faktisk motsatt av utfallet. I lærings

Redaksjonens

Forskjell mellom film og video

Hovedforskjell : Begrepet film refereres til filmer av kunstnerisk eller pedagogisk karakter, som ikke forventes å ha stor og kommersiell appell. Begrepet "video" betyr vanligvis en film som er tatt opp på en videokassett. Film er et begrep som kalles kunsten å lage filmbilder. Det er den moderne definisjonen av kino som kommuniserer ideer, historier, oppfatninger, følelser, skjønnhet eller opplevelser ved hjelp av innspilte eller programmerte bevegelige bilder sammen med andre stimuleringer. Ifø