? Java-klasser definere objekter for å utføre påføring oppgaver. Innen Java-prosjekter , programmerere definerer disse objektene ved å opprette klassen erklæringer . En klasse erklæring skisserer egenskapene eventuelle objekt forekomster av klassen vil ha, samt metoder som blir implementert . I de fleste tilfeller kan Java-programmer opprette objekter av alle klasser med klasse erklæringer skissert . Hvis imidlertid en klasse er abstrakt , kan det ikke bli instansiert . Gjennomføring
Normalt, når et program inneholder en klasse erklæring , kan andre koder opprette objekt forekomster av klassen skissert i den. Når dette skjer, vil den resulterende objektet holde dataene og implementere metodene nevnt i klassen erklæringen. Når et program erklærer en klasse som abstrakt , kan dette ikke skje , som objekter av klassen ikke kan opprettes . Følgende eksempelkode demonstrerer erklære en klasse som abstrakt : en
public abstract class GreatHelper
motsetning til ikke- abstrakte klasser , kan prosjektet hvor denne koden vises ikke skape " GreatHelper " objekt tilfeller < . br >
Inheritance
Selv om programmene ikke kan instantiate abstrakte klasser , kan de utvide dem . Java arv lar programmerere å utvide eksisterende klasse erklæringer ved hjelp av følgende syntaks : en
public class SpecificHelper strekker GreatHelper
Når en klasse utvider en annen klasse , arver det de metoder og egenskaper for den overordnede klassen . Utvide klasser kan også gi ekstra funksjonalitet på toppen av de nedarvede superklasse variabler og metoder. Arv er derfor en måte å gi spesialisert funksjonalitet , med underklasser som spesialiserer seg innenfor et ansvarsområde dekket mer generelt av den overordnede klassen . Med en abstrakt klasse , gjelder dette prinsippet om arv også , så subklasser av abstrakte klasser kan startes , selv om deres foreldre ikke kan.
Formål
Abstrakte klasser tillate programmerere til å lage definisjoner for sett av objekter som vil ha noen felles egenskaper, men også noen forskjeller . Abstrakte klasser vanligvis bare delvis gjennomføre sine oppgaver , mens deres underklasser kan gi mer detaljerte gjennomføringen egnet til spesifikke omstendigheter. Abstrakte klasser kan inneholde både abstrakte og ikke- abstrakte metoder. Abstrakte metoder kan bare vises i abstrakte klasser , med krav om at underklasser vil implementere disse metodene , med mindre de også er abstrakt .
Alternatives
Hovedalternativet til å skape abstrakte klasser i Java skaper grensesnitt . Når et program omfatter et grensesnitt , kan klasse deklarasjon implementere dette grensesnittet, i stedet for å utvide den som i tilfelle av en abstrakt klasse . Et grensesnitt fungerer som en kontrakt , definere metodene som gjennomfører klassene skal gi, men uten å gi noen implementasjonsdetaljene selv. Et grensesnitt kan liste metoder ved hjelp av bare sine disposisjoner, med implementering klasser gir metoden detaljer. Følgende eksempelkode demonstrerer en klasse erklæring implementere et grensesnitt : en
public class SomeHelper strekker HelpfulOrganizer
Innenfor grensesnitt erklæringen , kan metoden skisserer se slik ut:
offentlige String getWords ();
motsetning abstrakte klasser , kan grensesnitt ikke gi noen implementasjonsdetaljene
.