Java er en computer programmeringssprog først indført i 1995 af Sun Microsystems. Begge grænseflader og abstrakte klasser bruges i Java- kode, når flere sub- typer af samme klasse har brug for at opføre sig anderledes . Abstrakte klasser og grænseflader fungerer meget forskelligt og anvendes på forskellige måder, selvom der er nogle ligheder mellem dem . Sprog
abstrakte klasser og grænseflader giver mulighed for forskellig kode, der skal anvendes. For eksempel kan en abstrakt klasse indeholde konkrete klasser , mens en grænseflade kan indeholde abstrakte klasser . En abstrakt klasse er også mere flydende end et interface og kan indeholde felter, der ikke er statisk eller endelig , mens et interface ikke kan. Hertil kommer, automatisk en abstrakt klasse arver et objekt klasse, hvilket betyder at det vil omfatte metoder såsom " klon ( )" og " lig ( ) ", mens et interface ikke kan medtage disse metoder.
Anvendte metoder
Metoder en abstrakt klasse kan defineres med en række synlighed parametre , herunder offentligheden, beskyttet , privat eller ingen. En grænseflade kan kun være synligt offentligheden. Det betyder, at alle medlemmer af et interface er offentlige som standard , mens medlemmer af en abstrakt klasse kan omfatte ikke-offentlige medlemmer eller metoder.
Resultater
generelt interfaces drive en lidt langsommere end abstrakte klasser, fordi de indfører en ny klasse for hver metode , som er implementeret , og det kan tage ekstra tid til en grænseflade til at finde den korrekte metode i hver klasse . En abstrakt klasse , på den anden side finder kan én metode til flere klasser på én gang , og udfører således hurtigere . Men de fleste JVMs ( Java Virtual Machines ) i 2011 kompensere for forskellen , og disse resultater forskelle næppe bemærket længere.
Brug
En grænseflade bør anvendes når dit script beder dig om at give implementering for alle dine metoder. Interfaces kan bygge alle dine klasser tilbage op fra bunden på en systematisk måde . Abstrakte klasser skal bruges , når du har en delvis gennemførelse af dit script , men det er ikke helt færdig. Efterlad disse ufuldstændige implementeringer som " abstrakte " og tillade en server at fortolke dem .