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

  • skillnad mellan: Skillnad mellan kanel och cassia

    Skillnad mellan kanel och cassia

    Huvudskillnad: Kanel eller äkta kanel refererar till Ceylon kanel som härrör från växten Cinnamomum zeylanicum. Cassia hänvisar till en annan kanel som kan härledas från cassia-barkträet. Båda skiljer sig åt i många aspekter som smak, prissättning, kumarinhalt, etc. Termen kanel refererar i allmänhet till verklig eller sann kanel som är infödd till herr Lanka. Det härrör frå
  • skillnad mellan: Skillnad mellan gemensam lag och strafflag

    Skillnad mellan gemensam lag och strafflag

    Huvudskillnad: Gemensamma lagar är lagar som har uppstått av att ha utfärdats utifrån domstolsavgöranden. Dessa lagar utvecklas baserat på domar som har gjorts i äldre rättsfall. Gemensamma lagar är också kända som rättspraxis eller prejudikat. Straffrätt är den rättslig grund som handlar om brott och tillhandahåller rättvisa till brottsoffer. Kroppen ansvara
  • skillnad mellan: Skillnad mellan Secret Admirer och Stalker

    Skillnad mellan Secret Admirer och Stalker

    Huvudskillnad: En hemlig beundran är någon som gillar eller har känslor för en annan person men kan vara för blyg att närma sig honom eller henne. En Stalker är också någon som gillar eller har känslor för en annan person. Men en stalker går om att visa att kärlek är fel sätt. Det är alltid trevligt att uppskattas; Men vissa former av uppskattning kan vara mer aggressiva än andra. En hemlig beund
  • skillnad mellan: Skillnad mellan direkt sponsrat innehåll och sponsrat innehåll i LinkedIn

    Skillnad mellan direkt sponsrat innehåll och sponsrat innehåll i LinkedIn

    Viktig skillnad: Sponsrat innehåll är innehåll skapas och sponsras av administratörerna på datorns sida. Direkt sponsrat innehåll är å andra sidan innehåll som skapats av andra, men sponsras av företaget. Direkt sponsrat innehåll och sponsrat innehåll är två olika typer av marknadsföringstaktik som kan utnyttjas av ett företags varumärke. De är främst ti
  • skillnad mellan: Skillnad mellan federala och privata lån

    Skillnad mellan federala och privata lån

    Huvudskillnad: Den mest grundläggande skillnaden mellan dem är det faktum att de federala lånen ges av regeringen, medan de privata lånen tillhandahålls av organisationer inom den privata sektorn, såsom privata banker, kreditförbund, statliga myndigheter eller en skola. När det gäller lån finns det två huvudtyper. Dessa är
  • skillnad mellan: Skillnad mellan sjömän och däckkadett

    Skillnad mellan sjömän och däckkadett

    Huvudskillnad: Sjömannen är den lägsta rungen i däckavdelningen. Det är en inträdesnivå som inte kräver någon erfarenhet som alla. En sjömans uppgifter innefattar att göra allt som behövs för drift och underhåll av däckavdelningsområden och utrustning. En däckkadett är å andra sidan den tredje ringen från botten. De är officerarna
  • skillnad mellan: Skillnad mellan HTC First och HTC One X

    Skillnad mellan HTC First och HTC One X

    Huvudskillnad: HTC First är den första telefonen som kommer att släppas på Facebook-användargränssnittet. Telefonen kommer att drivas av en Qualcomm MSM8930 Snapdragon 400 1, 4 GHz dubbelkärnig Krait och en 1 GB RAM. HTC One X är en populär produkt från HTC Corporation. Den levereras med Android v4.0 Ice Cre
  • skillnad mellan: Skillnad mellan löslighet och upplösning

    Skillnad mellan löslighet och upplösning

    Huvudskillnad : Upplösning är den process genom vilken ett lösningsmedel löses upp i ett lösningsmedel och bildar en lösning. Löslighet är en kvantitativ term som definierar den maximala mängden lösningsmedel som löses upp i lösningsmedlet. Upplösning och löslighet är relaterade till varandra, men det finns fortfarande en subtil skillnad mellan dem. Upplösning hä
  • skillnad mellan: Skillnad mellan jakt och poaching

    Skillnad mellan jakt och poaching

    Huvudskillnad: Jakt är en sport som involverar stalking och dödande av vilda djur. Dessa djur används då antingen som mat, eller vanligare som en trofé eller för handel. Poaching är i princip jakt, när en utan rätt att göra det. Poaching är inget annat än den olagliga jakten, dödandet eller fångsten av vilda djur. Det innebär

Redaktionen

Skillnad mellan Samsung Galaxy Mega 5,8 och Nexus 4

Nyckelfaktor: Samsung har nu utökat sina erbjudanden i kategorin phablet genom att introducera Samsung Galaxy Mega 5.8 och Samsung Galaxy Mega 6.3. Samsung Galaxy Mega 5.8 är namngiven på grund av dess 5, 8 tums TFT kapacitiv pekskärm, med en upplösning på 540 x 960 pixlar. Telefonen drivs av en dubbelkärnig 1, 4 GHz-processor med en 1, 5 GB RAM. Nexus