Avatar billede apa Nybegynder
08. juni 2003 - 09:37 Der er 6 kommentarer og
1 løsning

Brug af static variable og metoder.

Hej,
Er der en der kan forklare mig helt præcist, hvorfor det kan være smart at benytte static varialble og static metoder?
Avatar billede arne_v Ekspert
08. juni 2003 - 09:46 #1
Static variable er delt mellem instanser.

Hvis du har en klasse C og 3 instanser O1, O2 og O3. Hvis klassen
C har en static variable sv og en normal variable v, så vil
O1, O2 og O3 havde hver sin v, men de vil dele sv d.v.s. at alle
3 instanserer vil referere til samme variabel.

Static metoder er metoder der kaldes på klasse og ikke på instans.

De kaldes med enten klassnavn.metode eller objektnavn.metode hvor
en normal metode skal kaldes med objektnavn.metode - static metoder
kan ikke bruge ikke-static variable i klassen.
Avatar billede arne_v Ekspert
08. juni 2003 - 09:49 #2
Static variable bruge typisk til data som der kun skal være en forekomst af
uanset hvor mange instanser der er.

Static metoder bruges typisk til ting som:
  - ikke objekt-orienteret funktionalitet ligesom Math.xxx
  - adgang til static variable
  - forskellige creational patterns som f.eks. factory og singleton
Avatar billede apa Nybegynder
08. juni 2003 - 11:03 #3
Betyder det, at hvis jeg på forhånd ved at en variabel f.eks. static int tal = 10;, altid er 10 for de forskellige objekter der skal bruge den. Og hvis et objekt ændrer på denne - vil det have konsekvenser for alle de andre objekter der bruger den? Kan man sige at static bruges når værdien af en variabel skal gælde generelt i et program?
Fødes et objekt med static variabel "inde i maven" eller blot en reference til variablen?
Avatar billede arne_v Ekspert
08. juni 2003 - 11:14 #4
Altid 10 er final ikke static.

Hvis en static variabel ændres vil ændringen virke for alle instanser
af den klasse.

Ja - static er "for hele programmet".

Der gælder det samme for static som for normale variable: simple
data typer er i selve objektet, objekter er der kun som referance.
Avatar billede arne_v Ekspert
08. juni 2003 - 11:34 #5
Bare så du ikke misforstår mig:
  static int tal = 10;
er OK og 10 kan ændres. Men:
    static final int TAL = 10;
kan ikke ændres.
Avatar billede apa Nybegynder
08. juni 2003 - 11:52 #6
Tak!
Avatar billede reanimator Nybegynder
08. juni 2003 - 12:52 #7
Statiske instanser har også den fordel, at de bliver oprette før eventuelle objekter af en given klasse. Hvilket der bliver benyttet i en række design-mønstre. Det kan anbefales, at du kigger nærmere på de design-mønstre der hedder 'Singleton'.

Mvh
Reanimator
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester