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 Curling och Field Hockey

    Skillnad mellan Curling och Field Hockey

    Huvudskillnad : Curling är en vintersport som ifrågasätts mellan två lag, där målet är att tjäna flest poäng genom att skjuta stenar längs ett isark i ett markerat mål vid slutet. Field hockey är ett spel där två lag kämpar för besittning av en boll genom att använda pinnar, för att göra det högsta antalet mål för att vinna spelet. Inledningen av curli
  • populära jämförelser: Skillnad mellan barnpassning och barnomsorg

    Skillnad mellan barnpassning och barnomsorg

    Viktig skillnad: Barnpassning är en typ av barnomsorg där tonåringar ser efter barn, i utbyte mot vissa fickpengar. Barnomsorg är en uppgift att sköta och övervaka barnet, i avsaknad av sina föräldrar / vårdnadshavare. Barnpassning är egentligen en slags barnomsorg, där tonåringar tar hand om barn tillfälligt tills deras föräldrar / vårdnadshavare återvänder från jobbet. Barnvakt är vanli
  • populära jämförelser: Skillnad mellan Karate och MMA

    Skillnad mellan Karate och MMA

    Huvudskillnad: En differentierande faktor mellan Karate och MMA är att Karate är en form av kampsport som utvecklats i Japan, medan MMA är en kombination av flera kampsportar, inklusive Karate. Karate är en term som härrör från sammanslagningen av två ord: 'kara' och 'te'. Kara betyder tomt och te betyder hand, båda sätter ihop, dvs karate betyder i huvudsak "tom hand". Om suffi
  • populära jämförelser: Skillnad mellan ekologisk och kemisk odling

    Skillnad mellan ekologisk och kemisk odling

    Huvudskillnad: Ekologiskt jordbruk är processen att växa växter eller producera utan att använda industriella kemikalier. Kemiskt jordbruk, även känt som intensivt jordbruk, är att växa växter och producera med lågt växthastighetsförhållande, hög arbetsanvändning och omfattande användning av kemiska bekämpningsmedel och gödningsmedel. Friska och hälso
  • populära jämförelser: Skillnad mellan Bitcoin och Litecoin

    Skillnad mellan Bitcoin och Litecoin

    Huvudskillnad: Bitcoin är det första fullt implementerade protokollet för cryptocurrency-protokoll. Litecoin är en annan peer-to-peer cryptocurrency, som är inspirerad av och tekniskt nästan identisk med Bitcoin. Bitcoin och Litecoin är båda typerna av digitala kryptokurvor. En digital valuta är vilken valuta som helst som används online i motsats till traditionella valutor som har sedlar och mynt. Digitala
  • populära jämförelser: Skillnad mellan Photosystem I och Photosystem II

    Skillnad mellan Photosystem I och Photosystem II

    Huvudskillnad: Fotosystemet jag heter "I" som det upptäcktes före fotosystem II. Under fotosyntesprocessen kommer dock fotosystem II att spelas inför fotosystem I. Huvudskillnaden mellan de två är våglängderna för ljus som de svarar på. Fotosystem Jag absorberar ljus med våglängder kortare än 700 nm, medan bildsystem II absorberar ljus med våglängder kortare än 680 nm. Emellertid är
  • populära jämförelser: Skillnad mellan komma och period

    Skillnad mellan komma och period

    Huvudskillnad: Kommatecken och period särskiljas med hänvisning till deras funktioner. Komma används för att ansluta elementen, medan perioden används för att avsluta meningen. Kategorier av samma typ kan representeras tillsammans med hjälp av ett komma. Komma länkar olika element till en enda instans. Komma
  • populära jämförelser: Skillnad mellan Aikido och Jujitsu

    Skillnad mellan Aikido och Jujitsu

    Huvudskillnad: Aikido och Jujitsu är traditionella japanska konstformer, medan Jujitsu är Aikidos förfaderliga konstform. Både konstformerna skiljer sig åt i deras tekniker och implementeringar. Aikido är en sofistikerad kampsportform jämfört med Jujitsu, vilket är mer kamp och attackerande slags konstform. Aikido
  • populära jämförelser: Skillnad mellan russiner, sultaner och vinbär

    Skillnad mellan russiner, sultaner och vinbär

    Huvudskillnad: Termen raisin avser en torkad druv. Detta kan inkludera eventuella torra druvor eller specifika druvor. Typen av druvor varierar beroende på landet. Termen "sultana" används för att hänvisa till russin som är gjorda av sultana druva. Denna term brukar användas utanför USA. Curra

Redaktionen

Skillnad mellan låsa upp och jailbreaking en iPhone

Huvudskillnad: Lås upp en iPhone tar bort SIM-begränsningar från telefonen, vilket möjliggör användningen av iPhone på alla operatörer. Jailbreaking är en metod som gör att användaren kan komma över gränserna som placeras av Apple och låter användaren hämta ytterligare program, tillägg och teman som inte är tillgängliga via den officiella Apple App Store. Apple har många s