Forskel mellem grænseflade og abstrakt klasse i Java

Nøgleforskel: Interface eller en protokol er en fælles måde, der tillader uafhængige objekter at kommunikere med hinanden. Det repræsenterer en aftalt adfærd, der letter samspillet mellem de to objekter. En abstrakt klasse er en klasse af objekter, der ikke kan opstilles eller opstilles en forekomst af et objekt. Denne klasse kan ikke have nogen implementering eller kan have ufuldstændig implementering.

Java, C ++, C # er alle komplicerede programmeringssprog, der kræver en detaljeret undersøgelse og forståelse for at kunne arbejde sammen med. Der findes mange forskellige metoder, der bruges på disse sprog, der bestemmer, hvordan sproget skal fungere. Interface og Abstract Class er to forvirrende koncepter, der er en del af OOP (objektorienteret programmering). Disse to kan bruges individuelt eller sammen med hinanden. Disse to er helt forskellige fra hinanden og bruges i forskellige tilfælde.

Java er et programmeringssprog, som er blevet påvirket af C-sproget. Det hidrører meget af sin syntaks fra C og C ++, men det har færre lavniveau faciliteter end. Java er et generel programmeringssprog, der er designet til at have færre implementeringsafhængigheder i forhold til tidligere sprog. Det er samtidige, klassebaseret og et objektorienteret sprog.

Java blev udviklet af James Gosling hos Sun Microsystems og blev udgivet i 1995. Det blev oprindeligt frigivet som en kerne komponent i Sun Microsystems 'Java-platform. Sun har siden licenseret de fleste af dets Java-teknologier under GNU General Public License. Det betyder, at al den teknologi, der er licenseret under GNU General Public License, er åben kilde og generelt tilgængelig uden omkostninger. Sun Microsystems fusionerede til sidst Oracle Corporation. Fra og med 2012 er Java blevet et af de mest populære programmeringssprog til brug. Dette gælder især for klientserver-webapplikationer. Mange andre systemer har udviklet alternative implementeringer af Sun teknologier, såsom GNU Compiler til Java og GNU Classpath.

Interface eller en protokol er en fælles måde, der gør det muligt for uafhængige objekter at kommunikere med hinanden. Det repræsenterer en aftalt adfærd, der letter samspillet mellem de to objekter. Interfaceet indeholder nøglen til de forskellige handlinger, der implementeres, og tjener som et link mellem de to forskellige objekter. Hvis en klasse objekter udsættes for grænsefladen, skal klassen følge den adfærd, der implementeres af grænsefladen. Almindeligvis indeholder grænseflader kun konstante erklæringer og metodesignaturer. Enhver grænseflade, der implementerer en bestemt grænseflade, skal anvende alle metoder nævnt i grænsefladen eller blive erklæret som en abstrakt klasse. I Java kan ethvert objekt defineres som en grænseflade, hvis objektet er null eller indeholder en klasse, hvori den implementerer den pågældende grænseflade. Man kan implementere flere grænseflader til en enkelt klasse i Java ved hjælp af implementere søgeord.

En abstrakt klasse er en klasse af objekter, der ikke kan opstilles eller opstilles en forekomst af et objekt. Denne klasse kan ikke have nogen implementering eller kan have ufuldstændig implementering. Det kan også have abstrakte metoder eller egenskaber, som deles af alle underklasser. På nogle programmeringssprog er abstrakte typer uden implementering kendt som grænseflader. I Java kan en abstrakt type oprettes ved hjælp af nøgleordet 'abstrakt' i klassen definitionen. Formålet med at have en abstrakt klasse til at placere alle de metoder, der ikke implementeres i abstrakt klassen og overlade det til underklassen for at bestemme, hvordan man implementerer disse klasser. Hvis en klasse har en enkelt abstrakt metode, skal klassen erklæres som en abstrakt klasse, selv om man ikke behøver at have mindst en enkelt metode til at erklære en klasse abstrakt.

Malliktalksjava.in viser de store forskelle mellem grænseflade og abstrakt som:

  • Abstrakt klasse har konstruktøren, men grænsefladen gør det ikke.
  • Abstrakte klasser kan have implementeringer for nogle af dets medlemmer (Metoder), men grænsefladen kan ikke have implementering for nogen af ​​dens medlemmer.
  • Abstrakte klasser skal have underklasser ellers, der vil være ubrugelige.
  • Grænseflader skal have implementeringer af andre klasser ellers, der vil være ubrugelige
  • Kun en grænseflade kan udvide en anden grænseflade, men enhver klasse kan udvide en abstrakt klasse.
  • Alle variabler i grænseflader er som standard endelige
  • Grænseflader giver en form for multipel arv. En klasse kan kun udvide en anden klasse.
  • Grænseflader er begrænset til offentlige metoder og konstanter uden gennemførelse. Abstrakte klasser kan have en delvis implementering, beskyttede dele, statiske metoder mv.
  • En klasse kan implementere flere grænseflader. Men i tilfælde af abstrakt klasse kan en klasse kun udvide en abstrakt klasse.
  • Interfaces er langsomme, da det kræver ekstra indirection at finde tilsvarende metode i den aktuelle klasse. Abstrakte klasser er hurtige.
  • Tilgængelighedsmodifikator (Offentlig / Privat / Intern) er tilladt for abstrakt klasse. Interface tillader ikke tilgængelighed modifikator
  • En abstrakt klasse kan indeholde komplette eller ufuldstændige metoder. Grænseflader kan kun indeholde underskrift af en metode, men ingen krop. En abstrakt klasse kan således implementere metoder, men en grænseflade kan ikke implementere metoder.
  • En abstrakt klasse kan indeholde felter, konstruktører eller destruktorer og implementere egenskaber. En grænseflade kan ikke indeholde felter, konstruktører eller destruktorer, og den har kun egenskabens underskrift, men ingen implementering.
  • Forskellige adgangsmodifikatorer som abstrakte, beskyttede, interne, offentlige, virtuelle osv. Er nyttige i abstrakte klasser, men ikke i grænseflader.
  • Abstrakt omfang er op til afledt klasse.
  • Interface omfang er op til ethvert niveau af sin arvskæde.

Oplysningerne til tabellen er tillykke med codeproject.com og mindprod.com

grænseflade

Abstrakt klasse

Flere arv

En klasse kan arve flere grænseflader.

En klasse kan arve kun en abstrakt klasse.

Standard implementering

En grænseflade kan ikke give nogen kode, bare signaturen.

En abstrakt klasse kan give fuldstændig, standardkode og / eller bare de detaljer, der skal overstyres.

Adgang modifikatorer

En grænseflade kan ikke have adgangsmodifikatorer til subs, funktioner, egenskaber osv alt antages som offentligt.

En abstrakt klasse kan indeholde adgangsmodifikatorer til subs, funktioner, egenskaber.

Core vs Peripheral

Grænseflader bruges til at definere en klasses perifere evner. Med andre ord kan både menneske og køretøj arve fra en IMovable-grænseflade.

En abstrakt klasse definerer kerneidentiteten af ​​en klasse, og der bruges den til genstande af samme type.

homogenitet

Hvis forskellige implementeringer kun deler metodesignaturer, er det bedre at bruge grænseflader.

Hvis forskellige implementeringer er af samme art og bruger fælles adfærd eller status, er abstrakt klasse bedre at bruge.

Hastighed

Kræver mere tid til at finde den egentlige metode i de tilsvarende klasser.

Hurtig

Tilføjelse af funktionalitet

Hvis vi tilføjer en ny metode til et grænseflade, skal vi spore alle implementeringer af grænsefladen og definere implementering for den nye metode.

Hvis vi tilføjer en ny metode til en abstrakt klasse, har vi mulighed for at levere standard implementering, og derfor kan al eksisterende kode fungere korrekt.

Felter og Konstanter

Ingen felter kan defineres i grænseflader.

En abstrakt klasse kan have områder og konstanter defineret.

terseness

De konstante erklæringer i en grænseflade er alle formodede offentlige statiske finale.

Fælles kode kan tilføjes i en abstrakt klasse.

Konstanter

Kun statiske endelige konstanter, kan bruge dem uden kvalifikation i klasser, der implementerer grænsefladen.

Både forekomst og statiske konstanter er mulige. Både statisk og instans intialiser kode er også mulig at beregne konstanterne.

Tredjeparts bekvemmelighed

En grænsefladeimplementering kan tilføjes til en eksisterende tredjepartsklasse.

En tredjepartsklasse skal omskrives for kun at udvide fra den abstrakte klasse.

er-en vs. -bar eller can-do

Interfaces bruges ofte til at beskrive en klasses perifere evner, ikke dens centrale identitet, f.eks. En Automobile klasse kan implementere den genbrugelige grænseflade, som kunne gælde for mange ellers helt uafhængige objekter.

En abstrakt klasse definerer sine efterkommers kerneidentitet. Implementerede grænseflader opregner de generelle ting, en klasse kan gøre, ikke de ting, en klasse er.

I en Java-kontekst skal brugerne typisk implementere Runnable-grænsefladen i stedet for at udvide Thread, fordi de ikke er interesserede i at give noget nyt Trådfunktionalitet, de vil normalt kun have en kode, der har mulighed for at køre uafhængigt. De ønsker at skabe noget, der kan køres i en tråd, ikke en ny slags tråd. Den lignende er-en vs-har en debat op, når du beslutter dig for at arve eller delegere.

Plug-in

Brugeren kan skrive et nyt udskiftningsmodul til en grænseflade, der ikke indeholder en enkelt kode med fælles til de eksisterende implementeringer. Når brugeren implementerer grænsefladen, starter de fra bunden uden nogen standard implementering. Brugeren skal indhente værktøjer fra andre klasser; intet kommer med grænsefladen andet end nogle få konstanter. Dette giver brugeren frihed til at implementere et radikalt andet internt design.

Brugeren skal bruge den abstrakte klasse som-er til kodebasis, med al sin bagage, god eller dårlig. Den abstrakte klassens forfatter har pålagt brugeren en struktur.

Vedligeholdelse

Hvis klientkoden kun taler i form af en grænseflade, kan du nemt ændre den konkrete implementering bagved den ved hjælp af en fabriksmetode.

Hvis klientkode kun taler i form af en abstrakt klasse, kan du nemt ændre den konkrete implementering bagved den ved hjælp af en fabriksmetode.

Anbefalet

Relaterede Artikler

  • forskel mellem: Forskel mellem LC og SBLC

    Forskel mellem LC og SBLC

    Hovedforskel : 'Kreditkort' og 'StandBy Letter of Credit' er to juridiske bankdokumenter, som bruges af internationale forhandlere. Begge disse bogstaver bruges til at sikre den økonomiske sikkerhed mellem leverandøren og deres købere. Og SBLC er en type LC, der bruges, når der er en betingelse for køberens ydeevne, og dette brev er tilgængeligt hos sælgeren for at bevise køberens misligholdelse under salget. LC og
  • forskel mellem: Forskel mellem HTC First og Nokia Lumia 820

    Forskel mellem HTC First og Nokia Lumia 820

    Hovedforskel: HTC First er den første telefon, der vil blive frigivet kører på Facebook Home-brugergrænsefladen. Telefonen vil blive drevet af en Qualcomm MSM8930 Snapdragon 400 1, 4 GHz dual-core Krait og en 1 GB RAM. Nokia Lumia 820 var en af ​​de første telefoner, der skulle udvikles på Windows Phone 8. Den blev
  • forskel mellem: Forskel mellem Asteroider og Planeter

    Forskel mellem Asteroider og Planeter

    Hovedforskel: Den Internationale Astronomiske Union (IAU) definerer en planet som "en himmellegeme, der: (a) er i kredsløb omkring solen, (b) har tilstrækkelig masse til selvtyngde for at overvinde stive kroppskræfter, så det antager en hydrostatisk ligevægt (næsten rund) form, og (c) har ryddet kvarteret rundt om sin bane. &quo
  • forskel mellem: Forskel mellem ond og djævel

    Forskel mellem ond og djævel

    Nøgleforskel : Ordet ondt og djævel er næsten udskifteligt, meget nært beslægtet i deres betydning og brug. Hvis du beskriver nogen som ondt, mener du, at de er meget onde af naturen og glæder dig over ting, der skader andre mennesker. Mens djævel betyder en uhyggelig eller grusom person. Djævelen er personligheden af ​​ondskab, mens ondskab er tilstanden til at være ugudelig. Dette gør e
  • forskel mellem: Forskel mellem DDR3 og DDR4 RAM

    Forskel mellem DDR3 og DDR4 RAM

    Hovedforskel: DDR4 er den nyere generation DDR, der erstattede DDR3. I forhold til DDR3 har DDR4 en lavere driftsspænding, øgede strømbesparende forbedringer samt øget effektivitet og forbedret chiptæthed. Dybest set er det hurtigere og bruger mindre strøm. DDR3 og DDR4 er to forskellige typer RAM'er, der almindeligvis anvendes i computere og bærbare computere. RAM s
  • forskel mellem: Forskel mellem teske og spisesked

    Forskel mellem teske og spisesked

    Hovedforskel: Teske og spisesked er to forskellige stykker skeer, der er en del af bestiket. Tesken er den mindre ske, mens spiseskje er den største. Hvert hjem har stakke bestik i køkkenet. Bestik er sætene af skeer, gafler og knive, som man bruger til at spise med. Teske og spisesked er to forskellige typer sked, der er en del af bestiket. D
  • forskel mellem: Forskel mellem lov og regulering

    Forskel mellem lov og regulering

    Nøgleforskel: Loven er faktisk regler og retningslinjer, der opstilles af de sociale institutioner til at styre adfærd. Disse love er lavet af embedsmænd. Loven skal overholdes af alle, herunder private borgere, grupper og virksomheder samt offentlige figurer, organisationer og institutioner. Loven fastsætter standarder, procedurer og principper, der skal følges. For
  • forskel mellem: Forskel mellem rejsendecheck og personlig check

    Forskel mellem rejsendecheck og personlig check

    Nøgleforskel: Rejsesjekket er forudbetalte stykker papir, der udskrives med alle de oplysninger, der kræves af udstederen. Personlige checks er stykker papir, der udstedes af banker, der gør det muligt at fratrække pengene direkte fra en konto. Før en ferie er planlagt, er den største bekymring for, at en rejsende eller rejsende kommer på tværs af valutaen. Hvilke
  • forskel mellem: Forskel mellem Coaching og Mentoring

    Forskel mellem Coaching og Mentoring

    Nøgleforskel: Coaching og mentoring er to lignende udviklingsteknikker, der generelt bruges på arbejde for at forbedre individets præstationer og færdigheder. Coaching er ofte på kort sigt, mens mentor tendens til at være en løbende proces. Coaching er målrettet for at opnå specifikke færdigheder og mål, mens mentorskap dækker et bredt scenario relateret til et individ, hvor det fokuserer på både faglige og personlige spørgsmål. Coaching og me

Redaktørens Valg

Forskel mellem søde kartofler og yams

Nøgleforskel : Både "yams" og "søde kartofler" er kendt for at være de bedste sundhedsfødevarer. De tilbyder begge forskellige sundhedsmæssige fordele og forskellige kulinariske anvendelser, og hver grøntsag giver sin egen helt unikke og forskellige profil. Betegnelserne "søde kartofler" og "yams" anvendes omveksling og anses for at være de samme. Men dis