Variabler - Instans, statiske og final

Tags:    java


Hej,
Lige et par dumme spørgsmål:

1. Kan man bruge nøgleordet "final" i en signatur der også omfatter static? Det jeg mener er om man kan anvende final på en statisk variabel, dvs en konstant variabel, for ikke at ændre på den. Men hvorfor vil man gøre det? Jeg har nemlig set public static final osv osv..

2. Instans variabler - er dette referance variabler til selve objektet som erklæres uden for metoderne og lægges som "fields"?
Udfra denne illustration: http://javabog.dk/OOP/bog4_html_m35796a96.gif er p så instans variablet som bruges som referance til objektet??

3. Lokale variabler, er disse det samme som parametre?

På forhånd mange tak,
-henning



Hov glemte lige at spørge:
4. Hvorfor vil man som regel gøre instans variabler til "public" ??



2.ved ikke om dette svare på det her spørgsmål, men variabler kan være instanser af classer, også kaldet et object, se svar 3 er a,b og c instanser af klassen String

3. b er parameter og a er lokal variabel, c er argument i
Fold kodeboks ind/udKode 


4. for at spare sig selv for at skrive get og setter, men kan faktisk ikke komme med nogen god grund.



Sådan som jeg forstår koden,
så vil det sige følgende:

Fold kodeboks ind/udKode 


beklager er lidt forvirret af eksemplet.



nok fordi eksemplet var illustativt og ikke korrekt kode, det er en metode ven navn Navn, de variable navne du skriver i () efter en metode navn er parametere når du erklærer metoden så b er en parameter i Navn, dem du skriver imellem () når du kalder metoden er argumenter så c er det argument du sender til Navn, variabler erklæret inde i en metode er lokal variabler og kan ikke ses uden for metoden så a er lokal variable i metoden N.

kan godt være du for andre navne på parametre og argumenter er lidt afhængig af hvad ham/hende du spørg har lært at kalde dem for.



Hej Henning,

Der findes ikke dumme spørgsmål, kun dumme folk.

1. Ja.
static betyder at variablen eller metoden ligger i klassen, og at disse derfor ikke oprettes seperart til hvert objekt/instans af klassen.
final betyder at variablen er konstant som du skrev, det vil sige ikke forandres.

Et godt eksempel på en static final variabel, kunne eksempelvis være i circle klassen:
public static final double PI = 3.14;

Dermed vil samtlige instanser af circle klassen kunne finde PI, men den vil kun ligge i hukommelsen een gang, uanset hvor mange circle instanser(objekter) som er lavet [static]. Den er public, for andre må gerne vide hvad PI er. Og fordi at den er final vil PI aldrig kunne forandres.



2. Instans variabler er variable som ligger i objektet. Det vil sige ikke statiske variabler, som er erklæret udenfor metoderne i klassen. Disse eksisterer så længe som objektet eksisterer.



3. Lokale variabler er variabler som er erklæret (oprettet) i en metode, eller indenfor en for løkke eller lignende. Disse forsvinder igen når metoden eller løkken er færdig. En parameter til en metode er også en lokal variabel, idet at den kun eksisterer i den metode og forsvinder bagefter.



4. Nej! Det gør man kun hvis man er doven og hvis programmet er ligeglad hvad der står i den variabel. Instans variabler sætter man som regel til private, idet man gerne eksempelvis vil have et check på at en cirkels radius ikke er 0. Derfor laves en public boolean getRadius() og en public void setRadius(double Radius) metode til variablen private double radius;
ved at sætte instans variabler til private undgår man at ens klasse kan lave for mange fejl når den benyttes af andre i andre projekter.

Instans variabler sættes kun til public hvis de er final.



Bonus:
Fold kodeboks ind/udJava kode 



Ps. Det er lige før jeg skulle arbejde som java programmør, hva' ?


Med venlig hilsen
Ieet





Indlæg senest redigeret d. 10.06.2008 16:45 af Bruger #12836

Ps. Det er lige før jeg skulle arbejde som java programmør, hva' ?

ved ikke helt hvad man skal sige til det, så vidt jeg ved må construktore ikke have return værdier og de må ikke kaldes som en metode, men skal have new foran og selv i det tilfælde der det næppe smart at lave en instans uden at tildele denne instans til en variable. :D



Indlæg senest redigeret d. 10.06.2008 16:19 af Bruger #5620
Hej Nørden,

Det er din kode med kommentarer :D
Fair nok, det er ikke en Constructor, så omdøber lige klassen fra "Navn" i kommentarerne. Rart at have dig som compiler checker :D

Med venlig hilsen
Ieet

Ps. Det var ikke meningen at klassen eller metoderne skulle gøre noget nyttigt, men være illustrative.



Indlæg senest redigeret d. 10.06.2008 16:45 af Bruger #12836
du glemte kommentarene tilsidst i eksemplet :P



1000 mange tak for svar - det hjalp en hel del :D
Dejligt med folk i sådan et forum!



1000 mange tak for svar - det hjalp en hel del :D
Dejligt med folk i sådan et forum!



t