Java är en dator programmeringsspråk först introducerades 1995 av Sun Microsystems . Både gränssnitt och abstrakta klasser används i Java-kod när flera subtyper av samma klass måste bete sig annorlunda . Abstrakta klasser och gränssnitt fungerar väldigt annorlunda och används på olika sätt , även om det finns vissa likheter mellan dem . Språk
Abstrakta klasser och gränssnitt möjliggör annan kod som ska användas . Till exempel kan en abstrakt klass innehålla konkreta klasser , medan ett gränssnitt kan innehålla abstrakta klasser . En abstrakt klass är också mer vätska än ett gränssnitt och kan innehålla fält som inte är statiskt eller slutgiltigt , medan ett gränssnitt kan inte. Dessutom ärver en abstrakt klass automatiskt ett objekt klass , vilket betyder att den kommer att omfatta metoder såsom " clone ( ) " och " equals ( ) , " medan ett gränssnitt inte kan inkludera dessa metoder .
Genomförda Metoder
Metoder för en abstrakt klass kan definieras med en mängd synlighet parametrar , inklusive offentliga , skyddad , privat eller ingen. Ett gränssnitt kan bara vara synligt offentligt . Detta innebär att alla medlemmar i ett gränssnitt är offentliga som standard , medan medlemmar av en abstrakt klass kan inkludera icke - offentliga medlemmar eller metoder .
Prestanda
generellt gränssnitt fungerar lite långsammare än abstrakta klasser eftersom de introducerar en ny klass för varje metod som genomförs , och det kan ta lite extra tid för ett gränssnitt för att hitta rätt metod i varje klass . En abstrakt klass , å andra sidan , kan tillämpa en metod för flera klasser på en gång , och därmed presterar snabbare . Men de flesta JVM ( Java Virtual Machines ) för 2011 kompensera för skillnaden , och dessa prestanda skillnader är knappast märkt längre .
Använd
Ett gränssnitt bör användas när ditt manus ber dig att ge genomförandet för alla dina metoder . Gränssnitt kan bygga alla dina klasser tillbaka upp från grunden på ett systematiskt sätt . Abstrakta klasser bör användas när man har ett partiellt genomförande av ditt manus , men det är inte helt komplett . Lämna dessa ofullständiga implementationer som " abstrakt " och låta en server för att tolka dem . Addera