Programmeren in Java/Klassen: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
DimiC88 (overleg | bijdragen)
stukje over referentie naar variabelen eruitgehaald, te onduidelijk.
Label: bewerking met nieuwe wikitekstmodus
Bdijkstra (overleg | bijdragen)
poets
Regel 3:
 
==Klasse aanmaken==
Een klasse definiëren is redelijk eenvoudig, je gebruikt hiervoor de sleutelwoorden ''public'' en ''class'' dit wordt dan gevolgd door de naam de klasse in ons geval ''Car''. ''class'' zal dus aanduiden dat we een klasse gaan definiëren, wat ''public'' betreft daar komen we in een later hoofdstuk op terug. Er wordt dan een openende en sluitende accolade geschreven. DieTussen die accolades gaan later de inhoud, dus de eigenschappen en methodes, van de klasse bevattenkomen.
<syntaxhighlight lang="java">
public class Car {
Regel 10:
</syntaxhighlight>
 
Klassen kun je in hun eigen Java -bestand plaatsen, je moet dan wel als bestandsnaam dezelfde naam geven als de klasse die het bevat. Dus in dit geval ''Car.java''. Nu we de klasse hebben gedefiniëerdgedefinieerd en bewaard willen we er een instantie van hebben, we moeten dus een object maken op basis van de klasse. Dit doen we als volgt:
 
<syntaxhighlight lang="java">
Regel 21:
</syntaxhighlight>
 
Net zoals met primitieve datatypes vermelden we eerst het datatype, in dit geval ''Car'', gevolgd door de naam die we willen geven aan ons object, net zoals gewone variabelnamen. We gebruiken dan het gelijkaanteken (=) om er een waarde aan te koppelen. We moeten dus een nieuwe instantie aanmaken van onze ''Car'' klasse, daarom gebruiken we het sleutelwoord ''new'' opnieuw gevolgd door de naam van de klasse met dan ronde haakje. Bovenstaande code zal uiteindelijk niets op het scherm tonen, want het enige wat we hebben gedaan is een instantie van ''Car'' aanmaken. Wil je controleren of je code goed werkt kun je ''myCar'' laten uitprinten, zoals als volgt:
<syntaxhighlight lang="java" highlight=5>
public class Main {
Regel 37:
</pre>
 
Wat je hier zit is de naam van de klasse gevolgd door een @ met daarna een uniekeuniek hexadecimaal nummer specifiek voor dit object. Hierdoor kun je meteen ook aantonen dat je telkens keer je een instantie van een klasse aanmaakt je telkens een nieuw object krijgt. We gaan daarvoor in onze ''main'' een tweede ''Car'' object aanmaken en die ook laten uitprinten.
<syntaxhighlight lang="java" highlight=5,7>
public class Main {
Regel 56:
</pre>
 
Je ziet dat beide een andere uniekeuniek nummer hebben, maar ook dat deze altijd een ander nummer zullen hebben telkens je de code opnieuw uitvoert.
 
== Methodes ==
Regel 74:
</syntaxhighlight>
 
De methodes hebben we gedefinieerd met ''public'' gevolgd door ''void''. ''void'' betekent dat onze methode geen waarde zal terug geven wanneer we de methode oproepen. We geven onze methodes hun namen gevolgd door haakjes en accolades. DieTussen die accolades bevattenstaat de functionaliteit die de methodes moeten uitvoeren telkens ze worden opgeroepen; in dit geval zullen ze "De auto rijdt." of "De auto remt." afprinten. Nu je de methodes hebt gedifinieerd kun je ze gebruiken. Bijvoorbeeld als volgt in de ''main'':
 
<syntaxhighlight lang="java" highlight=5-6>
Regel 111:
</syntaxhighlight>
 
Om een eigenschap aan te maken in een klasse gebruiken we opnieuweopnieuw ''public'' gevolgd door het gewenste datatype met dan de naam van de eigenschap. We kunnen dan ook een waarde geven aan deze eigenschap en gebruiken in onze methodes, zoals we hier hebben gedaan bij ''drive''. Als je drive nu zou oproepen krijg je het volgende:
 
<pre>
Regel 138:
</pre>
 
Net zoals methodes, kun je eigenschappen buiten de de klasse oproepen door simpelweg de naam van je object te vermelden, gevolgd door een punt met daarna de naam van de eigenschap. Je kunt op deze manier waardes van een object ophalen, maar ook waardes naar het opbjectobject wegschrijven. Nu hebben we het type brandstof veranderd van diesel naar benzine, maar dit geeft wel een aantal problemen. In de echte wereld zou je ten eerste al niet zomaar een auto van type brandstof laten vervangen en zeker niet terwijl de auto in gebruik is. Auto's rollen niet uit de de fabriek als dieselauto's om dan omgebouwd te worden als benzine autobenzineauto's. Neen, je wilt dat de auto het juiste brandstof typebrandstoftype heeft op het moment dat je de auto aanmaakt. Hier komen zogenaamde ''constructors'' van pas.
 
== Constructors ==
Een constructor wordt aangeroepen op het moment dat er een nieuwe instantie van een klasse wordt gemaakt. Elke keer als het sleutelwoord ''new'' wordt gebruikt betekent dit dat er een constructor wordt aangeroepen. Nu hebben we tot nu toe met onze ''Car'' altijd een instantie kunnen maken met ''new'', hoewel we geen constructor hebben gedefiniëerdgedefinieerd. Dit komt omdat als je in Java geen constructor zelf definiëerddefiniëert, Java er voor jou ééneen aanmaakt tijdens het compileren. DeDie impliciete constructor die dan wordt aangemaakt ziet er als volgt uit.
 
<syntaxhighlight lang="java" highlight=5-7>
Regel 162:
</syntaxhighlight>
 
Een constructor kun je aanmaken door ''public'' te vermelden gevolgd door de naam van de klasse. In tegenstelling tot een gewone methode heeft de constructor géén return typereturntype, zelfs niet ''void''. Een constructor is bedoeld om dus een nieuwe instantie van een klasse aan te makeninitialiseren. Binnen de constructor kun je dus code schrijven die moet uitgevoerd worden wanneer je een object aanmaakt. We kunnen bij onze ''Car'' dan bijvoorbeeld het type brandstof bepalen.
<syntaxhighlight lang="java" highlight=3,6>
public class Car {
Regel 181:
}
</syntaxhighlight>
Nu heb je wellicht gemerkt dat wat we in bovenstaand voorbeeld hebben gedaan niet veel veranderd. We hebben enkel en alleen de plaatst waar ''typeOfFuelltypeOfFuel'' wordt bepaald verhuisd van het veld naar de constuctor. Als je nu een nieuw ''Car'' object zou aanmaken zal die nogsteedsnog steeds diesel als standaard brandstof hebben. De oplossing is argumenten toe te voegen aan de constructor.
<syntaxhighlight lang="java" highlight=5-6>
public class Car {
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.