? Java-klasser definerer objekter til at udføre applikationer opgaver. Inden Java projekter , definere programmører disse objekter ved at oprette klassen erklæringer. En klasse erklæring skitserer de egenskaber Ethvert objekt forekomster af klassen vil have, såvel som metoder det vil gennemføre . I de fleste tilfælde kan Java- programmer opretter objekter af nogen skitserede klasser med klasse erklæringer. Men hvis en klasse er abstrakt , kan det ikke instantieres . Implementering
Normalt, når et program indeholder en klasse erklæring , kan anden kode oprette objektet forekomster af klassen skitseret i det. Når dette sker , vil den resulterende objekt holde data og gennemføre de anførte metoder inden for klassen erklæring. Når et program erklærer en klasse som abstrakt , kan dette ikke ske, som objekter af klassen ikke kan oprettes. Følgende kodeeksempel viser erklære en klasse som abstrakt : Hej
offentlig abstrakte klasse GreatHelper
modsætning til ikke- abstrakte klasser, kan det projekt, denne kode vises ikke skabe " GreatHelper " object forekomster < . br >
Inheritance
Selvom programmerne ikke kan instantiere abstrakte klasser , kan de udvide dem . Java arv tillader programmører at udvide eksisterende klasse erklæringer ved hjælp af følgende syntaks : Hej
public class SpecificHelper udvider GreatHelper
Når en klasse udvider en anden klasse , det arver metoder og egenskaber i moderselskabet klassen. Udvidelse klasser kan også levere yderligere funktionalitet på toppen af de nedarvede superklasse variabler og metoder . Arv er derfor en måde at yde specialiseret funktionalitet, med underklasser speciale indenfor et ansvarsområde omfattede mere generelt af moderselskabet klassen. Med en abstrakt klasse , også dette princip om arv gælder så underklasser af abstrakte klasser kan instantieres , selv om deres forældre ikke kan.
Formål
Abstrakte klasser tillade programmører at skabe definitioner for sæt af objekter , som vil have nogle fælles egenskaber , men også nogle forskelle. Abstrakte klasser typisk kun delvist gennemføre deres ansvar , mens deres underklasser kan give mere detaljerede gennemførelse velegnet til særlige omstændigheder. Abstrakte klasser kan indeholde både abstrakte og ikke- abstrakte metoder. Abstrakte metoder kan kun forekomme inden for abstrakte klasser med kravet om, at underklasser vil gennemføre disse metoder , med mindre de også er abstrakte.
Alternativer
Det vigtigste alternativ til at skabe abstrakt klasser i Java skaber grænseflader. Når et program omfatter en grænseflade , kan klassedeklarationer implementere denne grænseflade , snarere end at udvide det som i tilfældet af en abstrakt klasse . En grænseflade fungerer som en kontrakt , som definerer de metoder, gennemførelsesbestemmelser klasser skal give , men uden at give nogen nærmere oplysninger om gennemførelsen selv . En grænseflade kan liste metoder ved hjælp af kun deres konturer , med at implementere klasser leverer metoden detaljer. Følgende kodeeksempel viser en klasse erklæring indeholder en grænseflade : Hej
public class SomeHelper udvider HelpfulOrganizer
Inden for grænsefladen erklæring kan metode skitserer ud som følger : Hej
public String getWords ();
modsætning abstrakte klasser, kan interfaces ikke give nogen gennemførelsesdetaljer
.