Skillnader mellan abstrakt klass och gränssnitt i Java Skillnad mellan

Anonim

Abstrakt klass vs gränssnitt i Java

För att förstå skillnaderna mellan abstrakt klass och gränssnitt i Java är det viktigt att först och främst förstå var och en av dessa självständigt. Den abstrakta klassen i Java används i deklaration av underklasser med en uppsättning gemensamma egenskaper. Den abstrakta klassens vanliga användning är en superklass av andra klasser som i själva verket tillåter den att förlänga abstraktklassen. Ett abstrakt nyckelord används i deklarationen av en abstrakt klass. Precis som någon annan klass skulle ha, har abstraktklassen fält som beskriver metoder och egenskaper som klassen kan utföra. Genom enbart en abstrakt klassförklaring kan klassen inte initieras

Ett Java-gränssnitt kan likställas med ett protokoll. Det representerar ett förinställt och överenskommet beteende som möjliggör förenkling av interaktionen mellan obelegda objekt. Beroende på användaren innehåller gränssnittet nyckeln till olika åtgärder som genomförs. Gränssnittet tjänar därför som en länk mellan producenten och konsumenten. Gränssnitt i Java är således en grupp metoder som innehåller tomma kroppar som kan ha konstanta deklarationer. Vid exponering av en klass i Java-gränssnittet betyder det att beteendet som förväntas av klassen är genomförandet av alla metoder i gränssnittet.

Skillnader

För det första tillåter en abstrakt klass fält som inte är statiska eller slutliga i motsats till de statiska och slutliga fälten som används i gränssnitt. Gränssnitt kan inte ha någon implementeringskod som används i dem, och det kan finnas implementeringskod som används i abstrakt klass. Implementeringskoderna som utrullades i abstraktklassen kan ha några eller alla de implementerade metoderna. Som standard är alla metoder för gränssnittet "abstrakta". ”

Synlighet är också möjlig för metoder eller medlemmar i en abstrakt klass som kan variera såsom allmän, skyddad, privat eller ingen. Gränssnittets synlighet kan å andra sidan endast förinställas till ett visningssätt som är "offentligt". ''

En abstrakt klass kommer automatiskt att ärva objektklassen. Detta innebär i själva verket att metoder som klon () och lika () ingår. I ett gränssnitt är inget arv av objektklassen möjligt. Efter detta har abstraktklassen förmågan att ha en konstruktör, men ett gränssnitt kan inte ha en.

Gränssnittet i Java har också en mycket viktig funktion med genomförandet av flera arv eftersom en klass bara kan ha en superklass. Även om endast en superklass kan vara närvarande, kan den implementeras i vilket antal gränssnitt som helst. Det är inte möjligt att ha flera arv i en abstrakt klass.

I prestanda tenderar gränssnitt att vara långsammare i genomförandet i motsats till abstrakt klass, främst på grund av den extra riktningen att hitta motsvarande metod i en klass. Skillnaden har emellertid blivit långsammare på grund av moderna Java virtuella maskiner som kontinuerligt uppgraderas.

Lägga till en metod i ett gränssnitt kräver att du spårar ner alla implementeringsklasser som implementerar det specifika gränssnittet. Alternativt kan du förlänga gränssnittet så att det får extra metoder. Om du råkar handskas med en abstrakt klass är allt som krävs för att lägga till standardimplementering av metoden och koden fortsätter att fungera. Eftersom skillnader existerar mellan abstrakta klasser och gränssnitt är det viktigt att notera att de inte är rivaler, men skillnaderna som nämns häri tjänar till att komplettera varandra.

Sammanfattning

  1. Abstrakta klassfält är inte statiska eller slutliga i motsats till gränssnitt som har statiska och slutliga tabeller.

  2. Ingen implementeringskod kan användas i gränssnitt medan den kan användas i abstrakt klass.

  3. Gränssnittets synlighet kan endast vara offentligt medan abstrakt klasssynlighet kan variera.

  4. En abstrakt klass kommer automatiskt att ärva objektklassen, men det är inte möjligt i gränssnittet.

  5. Abstrakt klass är snabbare än gränssnittet i genomförandet.