Programmeren in Java/Klassen: verschil tussen versies
Verwijderde inhoud Toegevoegde inhoud
Geen bewerkingssamenvatting |
|||
Regel 74:
</syntaxhighlight>
De methodes hebben we gedefinieerd met ''public'' gevolgd door ''void''. ''void'' betekent dat onze methode geen waarde zal terug geven
<syntaxhighlight lang="java" highlight=5-6>
Regel 141:
== 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ëerd. Dit komt omdat als je in Java geen constructor zelf definiëerd Java er voor jou één aanmaakt tijdens het compileren. De constructor die dan wordt aangemaakt ziet er als volgt uit.
<syntaxhighlight lang="java" highlight=5-7>
public class Car {
public String typeOfFuel = "diesel";
public Car() {
}
public void drive() {
System.out.println("De auto rijdt met " + typeOfFuel + ".");
}
public void brake() {
System.out.println("De auto remt.");
}
}
</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 type, zelfs niet ''void''. Een constructor is bedoeld om dus een instantie van een klasse aan te maken. 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 {
public String typeOfFuel;
public Car() {
typeOfFuel = "diesel";
}
public void drive() {
System.out.println("De auto rijdt met " + typeOfFuel + ".");
}
public void brake() {
System.out.println("De auto remt.");
}
}
</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 ''typeOfFuell'' wordt bepaald verhuisd van het veld naar de constuctor. Als je nu een nieuw ''Car'' object zou aanmaken zal die nogsteeds diesel als standaard brandstof hebben. De oplossing is argumenten toe te voegen aan de constructor.
<syntaxhighlight lang="java" highlight=5-6>
public class Car {
public String typeOfFuel;
public Car(String typeOfFuel) {
this.typeOfFuel = typeOfFuel;
}
public void drive() {
System.out.println("De auto rijdt met " + typeOfFuel + ".");
}
public void brake() {
System.out.println("De auto remt.");
}
}
</syntaxhighlight>
==Structuur==
Regel 218 ⟶ 275:
We wijzigen de waarde van myValue via de kopie van de referentie in doSomething naar waarde 20. (We kunnen dus het object wijzigen). Dan in regel 12 laten we pbv naar een nieuw object
wijzen (toekenning) en wijzigen de waarde van myValue naar 30. De laatste regel (25) in main toont nog steeds de waarde 20 voor myValue. De referentie pbv in main na afloop van doSomething wijst nog steeds naar de oorspronkelijke pbv en niet naar het nieuwe PassByValue object aangemaakt in doSomething op regel 12. Dit laatste zou anders geweest zijn moest Java pass by reference zijn, dan was myValue 30 op regel 25.
{{Sub}}
|