Citat:
Ursprungligen postat av rahanjam
Skulle du kunna försöka specifiera dig lite mer och förklara
lite mer ingående.
Eller hänvisa till någon beskrivande text ?
(varning för onödigt lång och invecklad förklaring

)
Public/private
När det gäller public/private/protected innebär de synligheten från andra klasser och paket. Här är en beskrivning på hur synligheten påverkas av dem
http://java.sun.com/docs/books/tutor...sscontrol.html.
I korthet:
Kod:
private -> bara inom klassen
"inget" -> inom klassen och paketet
protected -> inom klassen, paketet och underklasser
public -> allt kommer åt den
Poängen med dessa har med objektorientering att göra. Om en metod eller klassvariabel är public kan man komma åt (och ändra) den vart som helst ifrån. Skriver man ett litet program där man tycker man har full kontroll på allt kan detta tyckas vara "praktiskt". Men problemet är att andra delar av programmet kanske ändrar något de borde. Det är faktiskt lätt hänt.
Det är inte helt lätt att förstå nyttan av dessa i början. Men tro mig, att ha variabler som "flyter omkring" och kan ändras när som helst, vart som helst, kommer snabbt göra även enkla program oläsbara så småningom.
I princip ska alla klassvariabler vara private, gör getters och setters för dem istället (alltså små metoder som returnerar värdena på variablerna), då kan man kontrollera att de inte ändras på felaktiga sätt.
Med metoder är det bäst att tänka på vad klassen gör och skriva upp de metoder som behövs för att utföra det. Dessa blir då public. Men finns några hjälpmetoder som göra delar av det klassen ska utföra så håll dem private. Även om de inte ändrar på några variabler (och därför kanske är helt "ofarliga") så blir det mycket enklare att hålla reda på vad klassen kan utföra om bara de grundläggande metoderna är public.
Static
tattares länk ovan förklarar det bra.
Det är egentligen rätt enkelt. Om metoden gör något med variabler som har med en instans (objekt) av klassen att göra, så ska de inte vara static.
Ett exempel på en statisk metod kan ju t.ex. vara om du har en klass "Äpplen", så kanske det finns variabler som "prisPerHekto" och "viktIKilo".
Sedan två metoder "totalPris" och "kiloTillHekto".
TotalPris räknar ut prisPerHekto*kiloTillHekto(viktIKilo). Och kiloTillhekto ovandlar vikten från kilo till hekto.
Här borde totalPris inte vara statisk för den använder sig av variablerna i instansen, medan kiloTillHekto mycket väl kan vara statisk då den bara omvandlar en godtycklig vikt i kilo till hekto och har ingenting att göra med instansen. (sedan är ju frågan om den borde finnas i just Äpplen-klassen, bättre kanske vore en klass "Omvandlare" som innehåller sånna metoder, men det är en annan fråga)