Programmeren in Java/Klassen: verschil tussen versies

Verwijderde inhoud Toegevoegde inhoud
DimiC88 (overleg | bijdragen)
kGeen bewerkingssamenvatting
DimiC88 (overleg | bijdragen)
k →‎public, private, protected: Verhuist naar eigen pagina waar het nog aangepast moet worden.
Regel 191:
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.
 
==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).
 
* public geeft aan dat iets zichtbaar is voor alle classes in een JVM
* protected geeft aan dat iets zichtbaar is binnen een ''package'' of voor subclasses
* geen access modifier geeft aan dat er sprake is van zichtbaarheid binnen een package
* private geeft aan dat iets zichtbaar is voor alleen de eigen class
 
Access modifiers kunnen worden toegepast op klassen, methoden en velden, maar niet alle modifiers hebben in alle gevallen een zinvolle betekenis.
 
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=
| Code=<syntaxhighlight lang=java line>
public class MyPublicClass { }
class MyDefaultClass {}
</syntaxhighlight>
}}
 
Velden en methoden kunnen alle 4 niveaus van zichtbaarheid hebben:
 
{{Code
| Taal=Java
| Titel=AccessDemo.java
| Code=<syntaxhighlight lang=java>
1: package myPackage;
2: public class MyPublicClass {
3: public int algemeenZichtbaar = 0;
4: protected int beperktZichtbaar = 0;
5: int nogBeperkterZichtbaar = 0;
6: private int nietZichtbaarVanBuiten = 0;
7:
8: public void algemeenAanroepbaar() { }
9: protected void ietsMinderAlgemeenAanroepbaar() { }
10: void nogMinderAlgemeenAanroepbaar() { }
11: private void nietAanroepbaarVanBuiten() { }
12: }
</syntaxhighlight>
}}
 
In het voorgaande voorbeeld wordt een public class aangemaakt in het package myPackage. Een package is een groepering van classes die met elkaar samenhangen. De class MyPublicClass is public, dat wil zeggen dat de class zichtbaar is voor alle classes binnen de JVM. MyPublic class heeft 4 velden en 4 methoden die alle vier de zichtbaarheids niveaus laten zien.
 
Merk op dat de zichtbaarheid van een methode of veld voor een andere class pas relevant wordt op het moment dat de class zichtbaar is voor die andere class.
 
Het public veld en de public methode zijn zichtbaar voor alle classes in de JVM. Dit betekent ook dat een object van een andere class de waarde van algemeenZichtbaar kan aanpassen.
 
Het protected veld en de protected methode zijn alleen zichtbaar voor classes in hetzelfde package als MyPublicClass, of voor subclasses van MyPublicClass.
 
Het default veld en de default methode zijn alleen zichtbaar voor classes in hetzelfde package als MyPublicClass.
 
Het private veld en de private methode zijn alleen zichtbaar voor MyPublicClass.
 
==final, abstract, static, synchronized, native, strictfp==
Informatie afkomstig van https://nl.wikibooks.org Wikibooks NL.
Wikibooks NL is onderdeel van de wikimediafoundation.