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 Modificeret Stam og Modificeret Root

    Forskel mellem Modificeret Stam og Modificeret Root

    Hovedforskel : Både stængler og rødder af en plante er ændret til forskellige former for at udføre specifikke funktioner bortset fra deres normale funktioner. Generelt ændrer planternes rødder og stamme deres strukturer for at tilpasse sig i miljøet. Nu, baseret på de forskellige dele af planten, der vokser over eller under jorden, kan stilkene og rødderne differentieres. Planter
  • forskel mellem: Forskel mellem Nokia Lumia 620 og LG Nexus 4

    Forskel mellem Nokia Lumia 620 og LG Nexus 4

    Nøgleforskel: En af de nyeste smartphones under mærket er Nokia Lumia 620. Nokia Lumia 620 er rettet mod købere på grundniveau, der ønsker at prøve en Windows Phone 8, men har ikke råd til at bruge for meget på det. Nexus 4 er Googles fjerde Nexus-brandede Android-smartphone. Det sigter mod at give en ren Android oplevelse. Nokia,
  • forskel mellem: Forskel mellem sort og jet sort

    Forskel mellem sort og jet sort

    Nøgleforskel: Sort er defineret som den mørkeste farve, som skyldes fraværet af al farve eller lys. Jet sort er afledt af det geologiske materiale og ædelsten, jet. Farve jet-sorten er enten sort eller mørk brun, men kan indeholde en metallisk glans. Mange mennesker antager, at sort og hvid også er farver, men det er ikke sandt; de er nuancer. Bemæ
  • forskel mellem: Forskel mellem Plantain og Banana

    Forskel mellem Plantain og Banana

    Hovedforskel: Banan er en berømt frugt, der stammer fra en høj urt, populært kendt som banantræet eller planten. Plantains kan betragtes som en bred vifte af bananer, som generelt ikke spises rå på grund af sin ikke-sød smag. Både banan og plantain tilhører den samme familie af Musaceae. Begge er forskellige i smag, udseende, skræl til kødforhold mv. Ordet ban
  • forskel mellem: Forskel mellem hårdttræ og blødt træ

    Forskel mellem hårdttræ og blødt træ

    Hovedforskel: Hårdttræ og blødt træ er to kategorier, der bruges til at klassificere forskellige typer skov. Dybest set er hårdttræet det træ, der kommer fra et angiosperm-træ. Dette er en type træ, der har frø, der er lukket, hvad enten det er i pods, en skal, en dækning eller i en frugt. Nogle ber
  • forskel mellem: Forskel mellem brødrister ovn og elektrisk ovn

    Forskel mellem brødrister ovn og elektrisk ovn

    Nøgleforskel: Brødristersovne er ovne, der er små elektriske ovne, der har en hoveddør, aftagelig ledningsstang og aftagelig bageplade. Disse ovne er ofte større end brødristere, men mindre end konventionelle ovne. Elektriske ovne eller kogeplader kører, ligesom navnet antyder, elektricitet. Det omdanner el til varme for at lave mad eller bage. Brødr
  • forskel mellem: Forskel mellem Freelancer og Independent Contractor

    Forskel mellem Freelancer og Independent Contractor

    Hovedforskel : Den primære forskel mellem de to er, at selvom en freelancer næsten altid er en individuel person, kan en uafhængig entreprenør være en person, en virksomhed, en virksomhed eller et selskab. Det kan uofficielt siges, at en freelancer er en type uafhængig entreprenør. Vilkårene Freelancer og Independent Contractor kan være ganske forvirrende, da de ved første øjekast ser ud til at være identiske. Tross alt
  • forskel mellem: Forskel mellem rejse og turisme

    Forskel mellem rejse og turisme

    Nøgleforskel: En rejsende er en person, der foretrækker at rejse lys og uden og turpakker. De foretrækker at flytte fra sted til sted og foretrækker aldrig at bosætte sig. En turist formodes at være ret modsat af en rejsende. En turist ses normalt i en stor gruppe mennesker, familie eller turistguider. Bete
  • forskel mellem: Forskel mellem måske og måske være

    Forskel mellem måske og måske være

    Nøgleforskel: Måske er et ordsprog. Det kan placeres i begyndelsen, midten eller slutningen af ​​en sætning. Det har samme betydning som ordet 'måske' eller 'muligvis'. Det er primært brugt til at indikere, at noget ikke er sikkert eller bestemt ikke vil ske. 'Må være', på den anden side er en konjugeret form af verbet 'at være'. Det kan kun

Redaktørens Valg

Forskel mellem, hvordan kommer og hvorfor

Hovedforskel: 'Hvordan kommer' og 'hvorfor' er to forskellige spørgsmål, der bliver spurgt på engelsk. Men den væsentligste forskel mellem de to er, at 'hvordan kommer' betragtes som mere et uformelt spørgsmål snarere end 'hvorfor', der anses for at være grammatisk korrekt og passende. '