Skillnad mellan gränssnitt och abstrakt klass i Java

Huvudskillnad: Gränssnitt eller ett protokoll är en vanlig metod som gör det möjligt för orelaterade objekt att kommunicera med varandra. Det representerar ett överenskommet beteende som underlättar samspelet mellan de två objekten. En abstrakt klass är en klass av objekt som inte kan instansieras eller sätta upp en förekomst av ett objekt. Den här klassen får inte ha någon implementering eller kan ha ofullständig implementering.

Java, C ++, C # är alla komplicerade programmeringsspråk som kräver en detaljerad studie och förståelse för att kunna arbeta med. Det finns många olika metoder som används på dessa språk som bestämmer hur språket ska fungera. Gränssnitt och abstrakt klass är två förvirrande begrepp som ingår i OOP (objektorienterad programmering). Dessa två kan användas individuellt eller tillsammans med varandra. Dessa två är helt olika från varandra och används i olika fall.

Java är ett programmeringsspråk som har påverkats av C-språket. Det härledar mycket av sin syntax från C och C ++, men det har färre lågnivåer än vad som helst. Java är ett allmänt programmerat språk som är utformat för att ha färre implementeringsberoende än i tidigare språk. Det är samtidigt, klassbaserat och ett objektorienterat språk.

Java utvecklades av James Gosling vid Sun Microsystems och släpptes 1995. Det släpptes ursprungligen som en kärnkomponent i Sun Microsystems Java-plattform. Sun har sedan licensierat större delen av sin Java-teknik enligt GNU General Public License. Det innebär att all teknik som är licensierad enligt GNU General Public License är öppen källkod och generellt tillgänglig utan kostnad. Sun Microsystems fusionerades slutligen till Oracle Corporation. Från och med 2012 har Java blivit ett av de mest populära programmeringsspråk för användning. Detta gäller speciellt för klient-server webbapplikationer. Många andra system har utvecklat alternativa implementeringar av Sun-tekniker, som GNU Compiler för Java och GNU Classpath.

Gränssnitt eller ett protokoll är ett vanligt sätt som låter orelaterade objekt kommunicera med varandra. Det representerar ett överenskommet beteende som underlättar samspelet mellan de två objekten. Gränssnittet innehåller nyckeln till de olika åtgärder som genomförs och fungerar som en länk mellan de två olika objekten. Om en klass av objekt utsätts för gränssnittet, måste klassen följa beteendet som implementeras av gränssnittet. Vanligtvis innehåller gränssnitt endast konstanta deklarationer och metodteckningar. Alla gränssnitt som implementerar ett visst gränssnitt måste tillämpa alla metoder som nämns i gränssnittet eller deklareras som en abstrakt klass. I Java kan varje objekt definieras som ett gränssnitt, om objektet är null eller innehåller en klass där den implementerar det specifika gränssnittet. Man kan implementera flera gränssnitt till en enda klass i Java med hjälp av implementera sökord.

En abstrakt klass är en klass av objekt som inte kan instansieras eller sätta upp en förekomst av ett objekt. Den här klassen får inte ha någon implementering eller kan ha ofullständig implementering. Det kan också ha abstrakta metoder eller egenskaper som delas av alla underklasser. På vissa programmeringsspråk är abstrakta typer utan genomförande kända som gränssnitt. I Java kan en abstrakt typ skapas med hjälp av sökordet "abstrakt" i klassdefinitionen. Syftet med att ha en abstrakt klass att placera alla metoder som inte implementeras i abstraktklassen och lämna det till underklassen för att bestämma hur man genomför dessa klasser. Om en klass har en enda abstrakt metod, måste klassen deklareras som en abstrakt klass, även om man inte behöver ha minst en enda metod för att deklarera en klassabstrakt.

Malliktalksjava.in listar de stora skillnaderna mellan gränssnitt och abstrakt som:

  • Abstrakt klass har konstruktören, men gränssnittet gör det inte.
  • Abstrakta klasser kan ha implementeringar för några av dess medlemmar (Metoder), men gränssnittet kan inte ha genomförande för någon av dess medlemmar.
  • Abstrakta klasser ska ha andra klasser som kommer att vara värdelösa.
  • Gränssnitt måste ha implementeringar av andra klasser som kommer att vara värdelösa
  • Endast ett gränssnitt kan utöka ett annat gränssnitt, men vilken klass som helst kan förlänga en abstrakt klass.
  • Alla variabler i gränssnitt är som standard slutliga
  • Gränssnitt ger en form av flera arv. En klass kan endast omfatta en annan klass.
  • Gränssnitt är begränsade till offentliga metoder och konstanter utan genomförande. Abstrakta klasser kan ha ett partiellt genomförande, skyddade delar, statiska metoder etc.
  • En klass kan implementera flera gränssnitt. Men i abstrakt klass kan en klass förlänga endast en abstrakt klass.
  • Gränssnitt är långsamma eftersom det krävs extra indirection för att hitta motsvarande metod i den aktuella klassen. Abstrakta klasser är snabba.
  • Tillgänglighetsmodifierare (Offentlig / Privat / Intern) är tillåten för abstrakt klass. Gränssnittet tillåter inte åtkomstmodifierare
  • En abstrakt klass kan innehålla fullständiga eller ofullständiga metoder. Gränssnitt kan endast innehålla en metods underskrift men ingen kropp. Således kan en abstrakt klass implementera metoder men ett gränssnitt kan inte implementera metoder.
  • En abstrakt klass kan innehålla fält, konstruktörer eller destruktorer och implementera egenskaper. Ett gränssnitt kan inte innehålla fält, konstruktörer eller förstörare och det har bara egenskapens signatur men ingen implementering.
  • Olika åtkomstmodifierare som abstrakta, skyddade, interna, offentliga, virtuella etc. är användbara i abstrakta klasser men inte i gränssnitt.
  • Abstrakt omfattning är upp till avledad klass.
  • Gränssnittets gränssnitt är upp till vilken nivå som helst av dess arvskedja.

Informationen för tabellen är artighet av codeproject.com och mindprod.com

Gränssnitt

Abstrakt klass

Flera arv

En klass får ärva flera gränssnitt.

En klass får ärva endast en abstrakt klass.

Standard implementering

Ett gränssnitt kan inte ge någon kod, bara signaturen.

En abstrakt klass kan ge fullständig, standardkod och / eller bara de detaljer som måste överdras.

Access Modifiers

Ett gränssnitt kan inte ha åtkomstmodifierare för subs, funktioner, egenskaper etc allt antas vara offentligt.

En abstrakt klass kan innehålla åtkomstmodifierare för subs, funktioner, egenskaper.

Core vs Peripheral

Gränssnitt används för att definiera perifer förmåga i en klass. Med andra ord kan både Människa och Fordon arva från ett IMovable gränssnitt.

En abstrakt klass definierar kärnidentiteten hos en klass och där används den för föremål av samma typ.

Homogenitet

Om olika implementeringar bara delar metoden signaturer är det bättre att använda gränssnitt.

Om olika implementeringar är av samma slag och använder vanligt beteende eller status är abstrakt klass bättre att använda.

Fart

Kräver mer tid för att hitta den verkliga metoden i motsvarande klasser.

Snabb

Lägga till funktionalitet

Om vi ​​lägger till en ny metod i ett gränssnitt måste vi spåra alla implementeringar av gränssnittet och definiera implementering för den nya metoden.

Om vi ​​lägger till en ny metod i en abstrakt klass har vi möjlighet att tillhandahålla standardimplementering och därför kan all befintlig kod fungera korrekt.

Fält och konstanter

Inga fält kan definieras i gränssnitt.

En abstrakt klass kan ha fält och konstanter definierade.

terseness

De konstanta deklarationerna i ett gränssnitt är alla antagna offentliga statiska slutliga.

Delad kod kan läggas till i en abstrakt klass.

Konstanter anter~~POS=HEADCOMP

Endast statiska slutkonstanter, kan använda dem utan kvalifikation i klasser som implementerar gränssnittet.

Både instans och statiska konstanter är möjliga. Både statisk och exemplifierad intialiserings kod är också möjlig att beräkna konstanterna.

Tredje parts bekvämlighet

Ett gränssnitt implementering kan läggas till någon befintlig tredje part klass.

En tredjepartsklass måste omskrivas för att endast sträcka sig från abstraktklassen.

är-en vs--bar eller kan-göra

Gränssnitt används ofta för att beskriva en klasss perifera förmågor, inte dess centrala identitet, t.ex. En Automobile-klass kan implementera det återvinningsbara gränssnittet, vilket skulle kunna gälla för många annars helt orelaterade objekt.

En abstrakt klass definierar kärnidentiteten hos sina efterkommande. Genomförda gränssnitt uppräkna de allmänna saker en klass kan göra, inte vad en klass är.

I ett Java-sammanhang bör användarna typiskt implementera Runnable-gränssnittet istället för att utöka Thread, eftersom de inte är riktigt intresserade av att ge någon ny trådfunktionalitet, de vill bara ha en del kod för att kunna köra självständigt. De vill skapa något som kan köras i en tråd, inte en ny typ av tråd. Den liknande är-en vs-en debatt uppkommer när du bestämmer dig för att ärva eller delegera.

Plug-in

Användaren kan skriva en ny ersättningsmodul för ett gränssnitt som inte innehåller en enda kodpinne gemensamt med befintliga implementeringar. När användaren implementerar gränssnittet börjar de från början utan någon standardimplementering. Användaren måste skaffa verktyg från andra klasser; ingenting kommer med gränssnittet annat än några konstanter. Detta ger användaren frihet att genomföra en radikalt annan intern design.

Användaren måste använda abstrakta klassen som-är för kodbasen, med all dess åtföljande bagage, bra eller dåligt. Den abstrakta klassförfattaren har infört strukturen på användaren.

Underhåll

Om klientkoden bara talar i form av ett gränssnitt, kan du enkelt ändra den konkreta implementeringen bakom den, med hjälp av en fabriksmetod.

Om klientkoden bara talar i form av en abstrakt klass kan du enkelt ändra den konkreta implementeringen bakom den, med hjälp av en fabriksmetod.

Rekommenderas

Relaterade Artiklar

  • populära jämförelser: Skillnad mellan smoking och kostym

    Skillnad mellan smoking och kostym

    Huvudskillnad : En kostym är ett formellt slitage som vanligtvis bärs på kontoret, medan en smoking är en mer avslappnad version av en kostym som normalt bärs på seminella formella händelser. Suit och Smoking är både det formella slitage för män. Killar säker på att klä upp sig tröttande; De går kausligt för en kostym eller en smoking, enligt deras preferenser. Men man kan for
  • populära jämförelser: Skillnad mellan Galaxy och Solar System

    Skillnad mellan Galaxy och Solar System

    Nyckelfaktor: En galax är en stor samling stjärnor som hålls ihop av gravitationsattraktion. Ett solsystem definieras som den grupp av himmelska kroppar som vrider sig runt solen på grund av dess starka dragkraft. Den största skillnaden mellan ett solsystem och en galax är i sin storlek. Solsystemet och en galax är två olika termer men ibland förväxlas med varandra. Ett sols
  • populära jämförelser: Skillnad mellan ser och ser

    Skillnad mellan ser och ser

    Huvudskillnad: Att titta på någonting innebär att titta på dina ögon eller erkänna dess närvaro. För att se, tittar inte bara på objektet men han / hon förstår det också och uppmärksammar det. I vårt försök att leva ett snabbt liv, inser ingen att livet bara går förbi. Vi tittar på saker och människor, utan att verkligen se dem. Att se och se är t
  • populära jämförelser: Skillnad mellan intelligens och kreativitet

    Skillnad mellan intelligens och kreativitet

    Huvudskillnad: Intelligens är kvaliteten på att vara väldigt smart och välinformerad. Kreativitet är förmågan att orsaka eller att existera. Det är ett subjektivt värde. Både intelligens och kreativitet är mentala förmågor. Det är en lång process att få detaljerad kunskap om dessa termer. Men den grundl
  • populära jämförelser: Skillnad mellan punkt, linje och plan

    Skillnad mellan punkt, linje och plan

    Huvudskillnad: En punkt är en punkt som betecknar en plats som har markerats på ett oändligt utrymme eller en plan yta. En linje anses vara endimensionell och introducerades för att representera raka föremål utan bredd och djup. Ett plan är en tvådimensionell plan yta som är obestämd stor med nolltjocklek. Punten,
  • populära jämförelser: Skillnad mellan Akbar och Shahjahan

    Skillnad mellan Akbar och Shahjahan

    Huvudskillnad: Akbar var den tredje Mughal kejsaren för att styra Indien. Han var en supporter av konst och litteratur. Shahjahan var den femte Mughal linjalen och stödde arkitektur och byggde också stora monument. Akbar och Shahjahan är båda välkända härskare av Mughal Empire. Dessa båda var kända för sina bidrag till imperiet och Indien i allmänhet. Akbar och
  • populära jämförelser: Skillnad mellan fettsugning och Lipo Laser

    Skillnad mellan fettsugning och Lipo Laser

    Huvudskillnad: Villkoren liposuction och lipo laser är medicinskt relaterade till varandra. Fettsugning är extraktion av fett, medan; lipo laser är fettförmågan hos fett genom laser. Fettsugning är en medicinsk operation; Det utvecklar arbetet från slutet av 1960-talet från Europa. Uppfinningen av moderna fettsugningsprocedur är kopplad till namnet på två italienska gynekologer, Arpad och Giorgio Fischer, som skapade den trubbiga tunnelmetoden 1974. Vid fetts
  • populära jämförelser: Skillnad mellan funktionshinder och nedsättning

    Skillnad mellan funktionshinder och nedsättning

    Huvudskillnad: Både termerna " funktionshinder " och " nedsättare t" används inom området funktionshinder. Handikapp är någon begränsning relaterad till en persons fysiska och mentala funktion hos en kroppsdel; medan nedskrivning är ett tillstånd där det finns en fullständig eller partiell förlust av någon kroppsdel ​​eller organ. Ett funktionshi
  • populära jämförelser: Skillnad mellan bilaga och bilaga

    Skillnad mellan bilaga och bilaga

    Huvudskillnad: Bilaga är ett dokument som bifogas slutet av forskningsprojektet eller en avhandling för att stärka data i dokumentet. En bilaga innehåller data som kan återfå saken i projektet eller avhandlingen. Bilaga och bilaga är begrepp som används vid forskningsprojekt, avhandlingar, böcker och juridiska dokument. På grun

Redaktionen

Skillnad mellan svart pepparkorn och grön paprika

Huvudskillnad: Svartpeppar är den vanligaste pepparkornen, som slipas och används som kryddor eller kryddor i många kök. Svartpeppar produceras genom att skördas när de fortfarande är gröna, orörda druvor av pepparkraften. Grön paprika, som liknar svart är gjord av omoterade paprika drupes. De kokas