? Javaklasser definiera objekt att utföra programuppgifter . Inom Java-projekt , programmerare definiera dessa objekt genom att skapa klassdeklarationer . En klassdeklarationen beskriver egenskaperna några objekt instanser av klassen kommer att ha , liksom metoder kommer det att genomföra . I de flesta fall kan Java-program skapa objekt av alla klasser anges med klassdeklarationer . Men om en klass är abstrakt , kan det inte instansieras . Genomförande
Normalt när ett program innehåller en klass deklaration , kan annan kod skapa objekt instanser av klassen beskrivs i det . När detta händer kommer det resulterande objektet hålla data och genomföra de metoder som anges i klassen deklarationen . När ett program deklarerar en klass som abstrakt , kan detta inte ske , som objekt av klassen inte kan skapas . Följande exempelkod visar förklara en klass som abstrakt :
offentliga abstrakt klass GreatHelper
skillnad med icke - abstrakta klasser , kan projektet i vilket denna kod visas inte skapa " GreatHelper " objektinstanser < . br >
Arv
Även programmen inte kan instansiera abstrakta klasser , kan de förlänga dem . Java arv tillåter programmerare att förlänga befintliga klassdeklarationer med följande syntax :
public class specifichelper utökar GreatHelper
När klassen utökar en annan klass , ärver det metoderna och egenskaperna för den överordnade klassen . Utöka klasser kan också erbjuda ytterligare funktionalitet utöver de nedärvda superklassens variabler och metoder . Arv är alltså ett sätt att erbjuda specialiserad funktionalitet , med underklasser specialiserade inom ett ansvarsområde omfattade mer generellt av den överordnade klassen . Med en abstrakt klass , gäller denna princip om arv också , så underklasser av abstrakta klasser kan instansieras , även om deras föräldrar inte kan.
Syfte
Abstrakta klasser tillåter programmerare att skapa definitioner för uppsättningar av objekt som kommer att ha vissa gemensamma egenskaper , men också en del skillnader . Abstrakta klasser oftast endast delvis genomföra sina skyldigheter , medan deras subklasser kan ge mer detaljerade genomförandet anpassad till särskilda omständigheter . Abstrakta klasser kan innehålla både abstrakta och icke - abstrakta metoder . Abstrakta metoder kan bara visas inom abstrakta klasser , med kravet att underklasser kommer att genomföra dessa metoder , om de inte också är abstrakta .
Alternativ
huvudalternativet att skapa abstrakta klasser i Java skapar gränssnitt . När ett program omfattar ett gränssnitt kan klassdeklarationer genomföra detta gränssnitt , istället för att omfatta som i fallet av en abstrakt klass . Ett gränssnitt fungerar som ett kontrakt , som definierar de metoder som genomför klasser måste ge , men utan att ge några detaljer om genomförandet själv . Ett gränssnitt kan lista metoder som endast använder sina konturer , med genomförandet klasser ger metoden detaljerna . Följande exempelkod visar en klassdeklarationen genomföra ett gränssnitt :
public class SomeHelper utökar HelpfulOrganizer
Inom gränssnittet deklarationen , kan metoden konturer visas enligt följande :
public String getWords ( ) ;
skillnad abstrakta klasser , kan gränssnitt ger inga implementeringsdetaljer Addera
.