Vad är skillnaden mellan abstrakt klass och gränssnitt i Java

De huvudskillnad mellan abstrakt klass och gränssnitt i Java är att abstrakt klass används för att genomföra abstraktion medan gränssnitt används för att genomföra abstraktion samt flera arv.

En viktig pelare i Objektorienterad Programmering (OOP) är Abstraktion. Det är processen att dölja detaljeringsinformationen och visa endast funktionaliteten för användaren. Till exempel behöver användaren inte förstå kretsarna i fjärrkontrollen för att kunna använda den. Abstraktion liknar det. Det gör att programmeraren kan fokusera på vad objektet gör istället för hur det görs. I Java finns det två metoder för att uppnå abstraktion: genom att använda abstrakta klasser och genom att använda gränssnitt. Dessutom är arv en annan OOP-pelare. Det hänvisar till att använda data och metoder för en redan befintlig klass. Multipla arv hänvisar till att använda data och metoder för flera klasser. Det är möjligt att genomföra flera arv som använder gränssnitt.

Viktiga områden som omfattas

1. Vad är abstrakt klass i Java
     - Definition, Funktionalitet
2. Vad är gränssnittet i Java
     - Definition, Funktionalitet
3. Vad är skillnaden mellan abstrakt klass och gränssnitt i Java
     - Jämförelse av viktiga skillnader

Nyckelbegrepp

Abstrakt klass, gränssnitt, flera arv

Vad är abstrakt klass i Java

En klass som deklareras med det abstrakta sökordet kallas en abstrakt klass. En abstrakt klass kan ha abstrakta metoder såväl som icke-abstrakta metoder. En klass kan förlänga en abstrakt klass och genomföra abstrakta klassens abstrakta metoder. Det är inte möjligt att skapa objekt från en abstrakt klass, men det är möjligt att skapa objekt från en klass som sträcker den abstrakta klassen. Se nedan exempel.

Figur 1: Form abstrakt klass

Figur 2: Rektangel klass

Figur 3: Huvudklass för program 1

Form är en abstrakt klass. Den har abstrakt metoddragning och icke-abstrakt metoddisplay. Rektangelklassen utökar Form. Därför implementerar rektangelklassen den abstrakta metoden rita. I huvudfunktionen skapas ett rektangelobjekt. Obj.draw () kommer att kalla metoden i rektangeldragning () och den kommer att skriva ut "rektangel".  

Vad är gränssnittet i Java

Ett gränssnitt i Java liknar en klass. Alla metoder i ett gränssnitt är abstrakta metoder. På samma sätt som en abstrakt klass kan ett gränssnitt inte instantieras. Ett gränssnitt kan användas för abstraktion såväl som för genomförandet av flera arv. Ett gränssnitt är deklarerat med hjälp av gränssnittssökordet. En klass som implementerar gränssnittet bör genomföra alla metoder som anges i gränssnittet. Se nedan exempel som illustrerar användningen av gränssnitt för att uppnå abstraktion.

Figur 4: Form-gränssnitt

Figur 5: Cirkelklass

Figur 6: Huvudklass av program 2

Form är ett gränssnitt, som har en abstrakt metod som kallas teckning. Cirkelklassen sträcker sig Shape. Därför implementerar cirkelklassen den abstrakta metoden rita. I huvudfunktionen skapas ett cirkelobjekt. S.draw () kommer att ringa metoden rita i Circle och den kommer att skriva ut "Circle". 

Gränssnitt kan också användas för att genomföra flera arv.

Figur 7: Gränssnitt A

Figur 8: Gränssnitt B

Figur 9: Klass C

Figur 10: Huvudklass av program 3

Gränssnitt A och B har båda abstrakta metoddisplayen. Klass C implementerar både gränssnitt A och B. Klass C tillhandahåller implementeringen för metodvisning. I huvudmetoden skapas ett objekt av C. Obj.display kommer att ringa visningsmetoden i C och skriva ut "Hello World!".

Skillnad mellan abstrakt klass och gränssnitt i Java

Definition

En abstrakt klass är en klass som deklareras med ett abstrakt sökord, som är en samling abstrakta och icke-abstrakta metoder. Däremot är ett gränssnitt i Java en referenstyp som liknar en klass som är en samling abstrakta metoder. Detta är den grundläggande skillnaden mellan abstrakt klass och gränssnitt i Java.

variabler

De använda variablerna är en skillnad mellan abstrakt klass och gränssnitt i Java. Medan en abstrakt klass kan ha slutliga, icke-slutliga, statiska och icke-statiska variabler, kan ett gränssnitt endast ha statiska och slutliga variabler.

metoder

En annan skillnad mellan abstrakt klass och gränssnitt i Java är att abstrakt klass kan ha abstrakta metoder och icke abstrakta metoder medan gränssnittet endast kan ha abstrakta metoder.

Multipla arv

Dessutom kan abstrakta klasser inte användas för att genomföra flera arv. Men gränssnitt kan användas för att implementera flera gränssnitt. Därför kan vi säga tillämpligheten som en skillnad mellan abstrakt klass och gränssnitt i Java.

Klassens nyckelord

Det abstrakta sökordet används också för att deklarera abstrakta klassen men gränssnittssökordet används för att deklarera ett gränssnitt. 

Förlängning och genomförande

Dessutom kan en abstrakt klass förlängas med hjälp av sökordet "sträcker sig". En gränssnittsklass kan implementeras med hjälp av sökordet "redskap".

Genomförande

Dessutom kan abstrakt klass implementeras med hjälp av nyckelord "redskap" medan gränssnitt används för att genomföra abstraktion såväl som flera arv.

Slutsats

Skillnaden mellan abstrakt klass och gränssnitt i java är att abstrakt klass används för att implementera abstraktion medan gränssnitt används för att genomföra abstraktion såväl som flera arv.

Referens:

1. "Abstrakt klass i Java - Javatpoint." Www.javatpoint.com, Tillgänglig här.
2. "Gränssnitt i Java - Javatpoint." Www.javatpoint.com, tillgängligt här.