Programmeren in Java/Klassen: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
DimiC88 (overleg | bijdragen)
kGeen bewerkingssamenvatting
Regel 11:
De definitie van een class is eenvoudig:
 
{{Code|
| Taal=Java
| Titel=
Regel 21:
is een correcte definitie van een class, die helaas niets doet. Door het toevoegen van methodes wordt het mogelijk om de class iets te laten doen:
 
{{Code|
| Taal=Java
| Titel=Dummy.java
Regel 35:
Deze niet al te spannende variant op "Hello world" laat een aantal belangrijke eigenschappen van een methode zien. Op regel 2 wordt een methode beschreven met de naam doSomething. De keywords public en void geven aan door welke Java classes deze methode te gebruiken is en wat de methode als waarde teruggeeft. In dit geval is de methode door alle classes in de JVM aan te roepen. void geeft aan dat de methode niets teruggeeft.
 
{{Code|
| Taal=Java
| Titel=Omdraaier.java
Regel 50:
 
==Structuur==
 
De structuur van een class is in feite simpel: binnen de definitie van een class worden velden en methoden beschreven. Over het algemeen zullen deze velden en methoden met elkaar samenhangen.
 
{{Code|
| Taal=Java
| Titel=HogerLager.java
Regel 84 ⟶ 83:
 
==Velden==
 
Velden bevatten data. Deze data kan van een primitief type zijn, zoals int of char, maar ook een type als StringBuilder of een instantie van een zelf gedefinieerde klasse. Velden zijn onder te verdelen in twee soorten: velden per klasse en velden per instantie. Een klein voorbeeld kan dit verschil duidelijker maken:
 
{{Code|
| Taal=Java
| Titel=Velden.java
Regel 114 ⟶ 112:
 
== Constructors ==
 
Een constructor wordt aangeroepen op het moment dat er een nieuwe instantie van een klasse wordt gemaakt. Elke keer als het keyword new wordt gebruikt betekent dit dat er een constructor wordt aangeroepen. Constructors zijn methoden met het verschil dat een constructor geen waarde teruggeeft en dat de naam van een constructor altijd gelijk is aan de naam van de klasse.
 
Regel 120 ⟶ 117:
 
==Methoden==
 
Methoden zijn de acties die een klasse uit kan voeren. In de voorgaande voorbeelden zijn diverse voorbeelden te vinden, zoals de methode getAantal() in Velden.java. Een methode heeft een naam, bijvoorbeeld getAantal. Een methode geeft mogelijk een waarde terug, in dit geval een int. Verder kan een methode een zogenaamde access modifier hebben, in dit geval is dat public. Verder kan een methode ook parameters verwachten:
 
{{Code|
| Taal=Java
| Titel=Optellen.java
Regel 141 ⟶ 137:
 
==Pass by value of pass by reference?==
 
Java maakt gebruik van pass by value voor het doorgeven van parameters aan een methode.
De methode gebruikt dus een kopie van de variabele die het meekrijgt van een aanroepende methode. Dit houdt in dat toekenningen die je in de methode doet op deze variabele niet gebeuren op de eigenlijke variabele van de aanroepende methode maar enkel op de kopie. Is de variabele geen primitief type (int, long, double) maar een referentie type (object), en je zou een toekenning doen dan heeft dit ook geen effect op het object dat meegegeven werd. Je kent de referentie immers een andere waarde toe niet het object zelf. Het object kan wel gewijzigd worden met deze referentie die een kopie is van de oorspronkelijke referentie meegegeven met de methode aanroep.
Regel 147 ⟶ 142:
Stel nu dat we de volgende code hebben: de class PassByValue met een public attribuut myValue = 10.
 
{{Code|
| Taal=Java
| Titel=PassByValue.java
Regel 157 ⟶ 152:
</syntaxhighlight>
}}
<br>
 
{{Code|
| Taal=Java
| Titel=Program.java
Regel 200 ⟶ 195:
 
==public, private, protected==
 
In Java is het idee van zichtbaarheid erg belangrijk. Java kent voor een class 4 niveaus van zichtbaarheid die aangegeven kunnen worden met 3 verschillende zogenaamde access modifiers (Zie module 2).
 
Regel 212 ⟶ 206:
Laten we beginnen met de acces modifiers voor een class. Een class kan public of default zichbaarheid hebben, de andere niveaus van zichtbaarheid hebben geen zin voor een class. De volgende definities laten zien hoe de zichtbaarheid van een class wordt aangegeven. Merk op dat default access impliciet is:
 
{{Code|
| Taal=Java
| Titel=
Regel 223 ⟶ 217:
Velden en methoden kunnen alle 4 niveaus van zichtbaarheid hebben:
 
{{Code|
| Taal=Java
| Titel=AccessDemo.java
Regel 255 ⟶ 249:
 
==final, abstract, static, synchronized, native, strictfp==
 
Naast de hiervoor genoemde access modifiers zijn er nog andere modifiers die gebruikt kunnen worden voor klassen, velden of methoden.
 
De eerste hiervan is final. final geeft aan dat er geen andere implementatie of waarde van iets mogelijk is.
 
{{Code|
| Taal=Java
| Titel=Optellen.java
Regel 275 ⟶ 268:
De final in regel 1 geeft aan dat het niet mogelijk is om de klasse Optellen te gebruiken om van te erven (zie module 6 voor meer informatie over dit onderwerp).
 
{{Code|
| Taal=Java
| Titel=AbstractOptellen.java
Regel 297 ⟶ 290:
Een methode kan ook static zijn. Een static methode kan worden aangeroepen zonder dat er een instantie van de klasse is:
 
{{Code|
| Taal=Java
| Titel=StaticVoorbeeld.java
Regel 334 ⟶ 327:
Om zelf een klasse in een samengeperst package, een ''[[w:.jar|java archive]]'' of kortweg ''jar'' te zetten, kunnen we gebruik maken van volgende code (uit te voeren in een DOS-commandoregel):
 
<syntaxhighlight lang="dos">
java -jar programma.jar
</syntaxhighlight>
Regel 340 ⟶ 333:
De inhoud kan zoals een gewone [[w:.zip|.zip]]-file bekeken worden met bvb. [[w:WinZip|WinZip]], maar kan er niet mee aangemaakt worden, omdat er naast de [[w:.class|.class]]- en [[w:.java|.java]]-bestanden ook nog een bestand met de naam ''[[w:en:Manifest file|MANIFEST.MF]]'' gemaakt wordt.
 
{{sub}}
 
{{Navigatie
|Boek=Programmeren in Java
Regel 349 ⟶ 339:
|volgende=Overerving
}}
{{subSub}}
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.