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 Samsung Galaxy Note 8.0 og Samsung Galaxy Mega 6.3

    Forskel mellem Samsung Galaxy Note 8.0 og Samsung Galaxy Mega 6.3

    Nøgleforskel: Samsung Galaxy Note 8.0 sigter mod at udfylde kløften mellem Galaxy Note II og Galaxy Note 10.1. Galaxy Note 8 har en 8 tommer TFT kapacitiv berøringsskærm med en opløsning på 800 x 1280 pixels. Enheden drives af en Quad-core 1, 6 GHz Cortex-A9 og 2 GB RAM. Enheden kører på Android OS, v4.1.2 (Je
  • forskel mellem: Forskel mellem And og Or

    Forskel mellem And og Or

    Nøgleforskel: Både 'og' og 'eller' er sammenhæng og bruges derfor ofte i en lignende sammenhæng. 'Og' er en type koordinerende konjunktion og bruges ofte til at angive et afhængigt forhold. Her er de to klausuler afhængige af hinanden, og begge er sande og tager sammen. 'Eller' er en anden type koordinerende konjunktion, men det angiver et uafhængigt forhold. Her e
  • forskel mellem: Forskel mellem Lenovo IdeaPad Yoga 13 og Sony Xperia Z Tab

    Forskel mellem Lenovo IdeaPad Yoga 13 og Sony Xperia Z Tab

    Nøgleforskel: Det unikke aspekt ved Lenovo IdeaPad Yoga 13 er, at det er en konvertibel bærbar computer med multi-mode 360 ​​deg Flip design. Dette gør det muligt for enheden at optage fire designtilstande. Dette inkluderer bærbar tilstand, tabletmodus, teltilstand og endelig standbytilstand. Lenovo
  • forskel mellem: Forskel mellem ASP og HTML

    Forskel mellem ASP og HTML

    Nøgleforskel: ASP står for Active Server Pages. Det er almindeligt kendt som Classic ASP eller ASP Classic. Det er et server-side scripting miljø, der er udviklet og udgivet af Microsoft. ASP blev superceded af ASP.NET. ASP.NET er en server-side webapplikationsramme. ASPX står for aktive server sider udvidet. De
  • forskel mellem: Forskel mellem terminskontrakt og fremtidig kontrakt

    Forskel mellem terminskontrakt og fremtidig kontrakt

    Nøgleforskel: En forward-kontrakt er en ikke-standardiseret kontrakt, der gør det muligt for parterne at tilpasse, hvordan de vil sælge eller købe et aktiv, til hvilken pris og hvilken dato. På den anden side er en fremtidig kontrakt en standardiseret kontrakt, der kræver futuresudveksling til at fungere som mellemmand mellem køber og sælger for at købe og sælge et aktiv på en bestemt dato i fremtiden og en bestemt pris. Handelens
  • forskel mellem: Forskel mellem et transskriptions og et eksamensbevis

    Forskel mellem et transskriptions og et eksamensbevis

    Nøgleforskel: Et Transkript er et dokument, der indeholder alle de klasser en studerende tager, alle de prøver, den studerende har forsøgt, og også de karakterer, som den studerende erhvervede i den pågældende klasse og eksamen. Et eksamensbevis er et dokument, der angiver hvilket specialiseret uddannelsesprogram, som den studerende har bestået. For s
  • forskel mellem: Forskel mellem yngre og ældre

    Forskel mellem yngre og ældre

    Nøgleforskel: Begrebet yngre er en komparativ form for ung, hvilket i grunden betyder mere ung. På samme måde er udtrykket ældre en komparativ form for gammel, som i grunden betyder ældre i alderen. Begrebet yngre og ældre er modsætninger, såvel som komplementære ord, hvilket betyder, at de ofte bruges sammen og betyder det modsatte af hinanden. Betegne
  • forskel mellem: Forskel mellem Microsoft Surface RT og Lenovo IdeaPad Yoga 11

    Forskel mellem Microsoft Surface RT og Lenovo IdeaPad Yoga 11

    Nøgleforskel: Microsoft Surface RT er en tablet, der indeholder en 10, 6 tommers TFT HD kapacitiv berøringsskærm med ca. 148 ppi densitet. Skærmen giver det ægte 16: 9 billedforhold. OS'et er imidlertid ikke kompatibelt med gamle Windows-pc-programmer. Det unikke aspekt ved Lenovo IdeaPad Yoga 11 er, at det er en konvertibel bærbar computer med multi-mode 360 ​​deg Flip design. Dette gø
  • forskel mellem: Forskel mellem Whisky og Vodka

    Forskel mellem Whisky og Vodka

    Nøgleforskel: Whisky eller whisky er en type destilleret alkoholholdig drik fremstillet af enhver form for fermenteret kornmash. Afhængig af den geografiske region eller type whisky, der fremstilles, kan whisky fremstilles af byg, maltet byg, rug, maltet rug, hvede og majs. De er ofte alderen i charred tønder. V

Redaktørens Valg

Forskel mellem House og Techno Music

Hovedforskel: House er en genre af elektronisk musik, der er karakteriseret ved 4/4 beat, kick tromme, off-beat hi-hat cymbals og synthesized basslines. Musikken synes at være en blanding af diskotek og elektronisk musik. Techno, også en genre af elektronisk dansemusik ligner Dubstep. Techno har sin oprindelse i Detroit, Michigan i midten af ​​slutningen af ​​1980'erne. Tempoet