Et lille problem angående klasser

Tags:    java

Fold kodeboks ind/udKode 


Når jeg compilerer denne kode, så får jeg fejlemeddelsen:

"non-static variable this cannot be referenced from a static context, myClass tal = new myClass();"

Hvis jeg ændrer class myClass -> static class myClass, så er der ingen problemer, og koden compilerer uden problemer(og virker bagefter).

Altid når jeg ser eksempler på hvordan man definerer klasser, så bliver de altid erklæret som 'class name', og jeg har ikke set blive erklæret som 'static class name'.

Omvendt, hvis jeg sletter 'static' fra main class, så fungerer det også uden problemer, men jeg ser næsten altid i tutorials og eksempler at main classen bliver erklæret som 'static'

/*//////////////////
// 2 Spørgsmål //
////////////////////
----------------------------------------------------------

Hvorfor skal jeg erklære min klasse som static for at den fungerer, og jeg kan kalde dens metoder i min main class?


Er der nogen der måske kunne uddybe dette emne omkring static og 'ikke static' for mig? :roll:

-----------------------------------------------------------






Indlæg senest redigeret d. 21.02.2007 16:29 af Bruger #10925
Du kan ikke kalde noget non-static fra en static funktion. Du kan dog godt kalde static fra non-static.

Static = Klassen er ikke intialiseret. Dvs. at man ikke kan have 2 forskellige værdier i den samme static variabel. Eks:
Fold kodeboks ind/udKode 



Istedet kan du gøre sådan her:
Fold kodeboks ind/udKode 




(Bemærk: Intet er testet!)



Hvad skal du med en nested class??

Men anyways, in nested class er kun tilgængelig for den klasse den er erklæret i..

Læs mere her

Nested classes er sjældent brugt, i hvilken sammenhæng skal du bruge den?




Jeg var faktisk ikke klar over at jeg lavede en nested class. ;)

Jeg ville bare have hele min kode samlet i en fil, i stedet for at erklære klassen i en fil for sig selv, og så kalde den derfra.

Men mange tak for svarene, og specielt henvisningen til tutorialen omkring nested classes, den var meget nyttig.





t