Forskellen mellem statisk og final i Java

Nøgleforskel - statisk vs endelige i Java
 

Hvert programmeringssprog har en bestemt syntaks. Programmereren skal følge disse syntakser, når man skriver programmer. Nøgleordene til programmeringssprog har specifik betydning i henhold til opgaverne. De leveres af programmeringssproget og kan ikke bruges til brugerdefinerede variabler, metoder, klasser, osv. Det statiske og det endelige er to nøgleord i Java. Denne artikel diskuterer forskellen mellem statisk og final i Java. Det vigtigste forskel mellem statisk og final i Java er det statisk bruges til at definere klassemedlemmet, der kan bruges uafhængigt af ethvert objekt i klassen, mens final bruges til at erklære en konstant variabel eller en metode, der ikke kan tilsidesættes eller en klasse, der ikke kan nedarves.

INDHOLD

1. Oversigt og nøgleforskel
2. Hvad er statisk i Java
3. Hvad er det endelige i Java
4. Ligheder mellem statisk og final i Java
5. Sammenligning side ved side - statisk vs final i Java i tabelform
6. Resume

Hvad er statisk i Java?

En klasse består af datamedlemmer (attributter) og metoder. For at kalde metoderne, skal der være et objekt for den specifikke klasse. Når en metode erklæres som statisk, er det ikke nødvendigt at oprette et objekt til at kalde denne metode. Metoden kan kaldes ved hjælp af klassens navn. Se nedenstående program.

Figur 01: Java-program med statiske variabler og statisk metode

I henhold til ovenstående program indeholder klasse A nummervariabel og visningsmetode. Begge er statiske medlemmer. Derfor er det ikke nødvendigt at oprette et objekt for at få adgang til nummervariablen og visningsmetoden. Programmereren kan skrive klassens navn direkte for at udskrive nummeret og kalde metodevisningen. Så det er ikke nødvendigt at instantisere et objekt. Hvis talvariablen og visningsmetoden ikke er statisk, skal der være et objekt af type A.

Figur 02: Brug af statisk blok

Ovenstående program indeholder den statiske blok og hovedmetoden. Den statiske blok kaldes, når klassen indlæses. Derfor udførelsen i den statiske blok udføres før erklæringen i hovedblokken. Hvis der er mange statiske blokke, udføres de i rækkefølge.

Hvad er det endelige i Java?

I programmet kan der være variabler af forskellige typer. Hvis der er en variabel som int x = 1; senere i programmet kan den variable værdi ændres til en anden værdi. En variabel, der er erklæret som endelig og initialiseret med en værdi, kan ikke ændres senere i programmet.

Figur 03: Program med endelig variabel og arv

I henhold til ovenstående program er x en endelig variabel. Det tildeles en værdi 5. Det kan ikke ændres en anden værdi, fordi den er erklæret som endelig. Java understøtter Objektorienteret programmering (OOP). En søjle i OOP er en polymorfisme. En type polymorfisme er altoverskyggende. Klasse A har visningsmetoden. Klasse B udvider klasse A, og det har sin egen visningsmetode. Når du opretter et objekt af type B og kalder, udskrives visningsmetoden “B” som output. Visningsmetoden i klasse A tilsidesættes af visningsmetoden for klasse B.

Hvis programmereren hvad han skal undgå at tilsidesætte en metode, kan han bruge det endelige nøgleord til denne metode. Hvis visningsmetoden i klasse A er endelig, giver displaymetoden i B en fejl, fordi denne metode ikke kan tilsidesættes.

Figur 04: det sidste nøgleord i metoden

En anden søjle i OOP er arv. Det hjælper med at genbruge den allerede eksisterende kode. Den nye klasse kan strække sig fra den eksisterende klasse og bruge datamedlemmer og metoder til den eksisterende klasse. Hvis det kræves at stoppe med at arve en klasse, kan programmereren bruge nøgleordet 'final'. Se nedenstående program.

Figur 05: det sidste nøgleord i klassen

I henhold til ovenstående program erklæres klasse A som endelig. Når klasse B udvider A, giver det en fejl, fordi klasse A er erklæret som endelig. Det kan ikke arves af andre klasser.

Hvad er ligheden mellem statisk og endelig i Java?

  • Både statisk og final er nøgleord i Java.

Hvad er forskellen mellem statisk og final i Java?

statisk vs finale i Java

Statisk nøgleord angiver, at der kan fås adgang til en medlemsvariabel eller -metode uden at kræve en instantiering af den klasse, den tilhører. Det endelige nøgleord angiver en enhed, der kun kan tildeles én gang.
 Variable
De statiske variabler kan geninitialiseres. De endelige variabler kan ikke geninitialiseres.
Metoder
Kan kaldes ved andre statiske metoder og få kun adgang til de statiske medlemmer af klassen. De endelige metoder kan ikke tilsidesættes.
klasse
Det statiske klasseobjekt kan ikke oprettes. Det indeholder kun statiske medlemmer. Den sidste klasse kan ikke arves af andre klasser.
Blok
Det statiske søgeord kan bruges i en blok. Det endelige nøgleord bruges ikke med en blok.

Resumé - statisk vs endelige i Java

Denne artikel diskuterede to nøgleord i Java såsom statisk og endelig. Forskellen mellem statisk og final i Java er, at statisk bruges til at definere klassemedlemmet, der kan bruges uafhængigt af ethvert objekt i klassen, mens final bruges til at erklære en konstant variabel eller en metode, der ikke kan tilsidesættes eller en klasse, der ikke kan blive arvet.

Reference:

1.Hvad er statisk nøgleord i Java | statisk metode og statisk variabel, Telusko Learnings, 6. mar. 2015. Tilgængelig her  
2.7.16 Sådan bruges statisk blok i Java Tutorial, Telusko Learnings, 30. april 2015. Tilgængelig her
3.8.13 Sådan bruges det endelige nøgleord i Java | Metode, klasse og variabel, Telusko Learnings, 26. februar 2015. Tilgængelig her