Programmeren in Java/Static: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
Lotje (overleg | bijdragen)
k typo :-)
Bdijkstra (overleg | bijdragen)
Geen bewerkingssamenvatting
Regel 1:
{{Programmeren in Java|Deel=Klassen}}
Nu dat je instanties van klassen hebt gemaakt, weet je dat iederede instantiewaarden verschillendevan waardesde kunnenvelden hebbenvan vooreen huninstantie onafhankelijk zijn van de velden van andere instanties en dat die waardeswaarden een invloed kunnen hebben op het gedrag van de methoden over de verschillende instanties heen. Neem nu volgend voorbeeld van een klasse ''Circle''.
 
<syntaxhighlight lang="Java">
Regel 62:
</pre>
 
Dit is natuurlijk correct, maar als je programma duizenden van zulke ''Circle'' objecten moet aanpassen moet er véél dubbel werk worden gedaan. Want elk ''Circle'' -object heeft deze aanpassingen nodig.
 
==Statische velden==
Regel 106:
 
==Constante statische velden==
Nu dat je een statisch veld hebt kun je er ook een constante van maken met het sleutelwoord ''final''. Met een constante wordt bedoeld dat je de waarde van het veld niet meer kuntkan veranderen.
 
<syntaxhighlight lang="Java" highlight="3,18">
class Circle {
public int radius;
public final static final double PI = 3.14;
 
public Circle(int radius) {
Regel 133:
 
==Statische methoden==
Ook methodes kunnen statisch zijn, deze kunnen dan net zoals statische velden worden gebruikt zonder dat je een instantie van de klasse nodig hebt. We kunnen bijvoorbeeld onsonze ''Circle'' -klasse aanpassen zodat we een ''getArea'' -methode hebben om een oppervlakte te berekenen van een cirkel zonder een object.
 
<syntaxhighlight lang="Java" highlight="13-14,22">
class Circle {
public int radius;
public final static final double PI = 3.14;
 
public Circle(int radius) {
Regel 165:
De oppervlakte van een cirkel met een straal van 4 is 50.24
</pre>
Wat je echter niet kunt doen binnen een statische methode is rechtstreeks de waarde van een veld aanspreken die niet statisch is. Onthoud dat niet -statische velden, velden zijn van een object. Wat je wel kunt doen is een statische methode oproepen vanuit een niet -statische methode. Je kunt bijvoorbeeld ''Circle'' dan ook als volgt aanpassen.
 
<syntaxhighlight lang="Java" highlight="10">
class Circle {
public int radius;
public final static final double PI = 3.14;
 
public Circle(int radius) {
Regel 189:
Er zijn ook zogenaamde statische klassen, deze bevatten enkel statische methodes en statische velden. Deze worden vaak ''utility classes'' of ''hulpklassen'' genoemd. Deze hulpkassen worden gebruikt om velden en methoden te bundelen die logisch gezien bij elkaar horen. Je zou bijvoorbeeld een hulpklasse kunnen maken om allerlei wiskundige bewerkingen in verband met cirkels kunnen bundelen in een zo'n hulpklasse.
 
Java bevat verscheidene van die ingebouwde hulpklassen en zijn terug te vinden in de package ''java.util''. Waaronder de klasse ''Arrays'' klasse, deze bevat allerlei methodes om bewerkingen uit te voeren op arrays. Deze kunnen ontwikkelaars gebruiken en moeten ze daardoor niet zelf deze functionaliteiten in hun code schrijven.
 
==Statische initialisatie blokken==
Als laatste zijn er ook nog wat ze statische initialisatie blokkeninitialisatieblokken noemen. Dit zijn statische blokken die één keer worden uitgevoerd wanneer de statische klasse voor de eerste keer wordt gebruikt. Ze worden gebruikt om de klasse waar ze in staan te initialiseren of klaar te maken voor gebruik.
 
<syntaxhighlight lang="Java">
Regel 222:
Waarde van de teller: 1
</pre>
In dit voorbeeld wordt het statisch veld ''counter'' geïnitialiseerd en krijgt het de waarde nul. Dit gebeurt echter pas wanneer de klasse voor de eerste keer wordt gebruikt. Je ziet dat de eerste ''println'' van de ''main'' als eerste wordt uitgevoerd. Dit is een simpel voorbeeld en er is hier geen duidelijk voordeel met het gebruik van een statische initialisatie blokkeninitialisatieblokken. Het is echter handig voor wanneer je veel complexere gegevens moetwil initialiseren, bijvoorbeeld een array of collectie van objecten die je moetwil aanmaken.
 
{{sub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.