Access modifiers controleren de zichtbaarheid van class members en dwingen inkapseling af door te beperken wie ze kan lezen of aanroepen.
Access modifiers controleren de zichtbaarheid van class members en dwingen inkapseling af door te beperken wie ze kan lezen of aanroepen.
| Modifier | Bereikbaar vanaf |
|---|
public | Overal |
protected | De klasse en haar subklassen |
private | Alleen binnen de declarerende klasse |
public class Employee {
private double salary; // internal — only Employee touches it
protected String department; // subclasses may use it
public String name; // open to all
public double getSalary() { // controlled, public read access
return salary;
}
}
salary is private dus geen externe code kan het beschadigen; de public getter is het enige raam naar binnen.
class Demo:
def __init__(self):
self.public = 1
self._protected = 2 # convention only ("don't touch")
self.__private = 3 # name-mangled to _Demo__private
Python heeft geen afgedwongen private — het vertrouwt op naamconventies. Java/C# dwingen modifiers af op compile time. Java heeft ook package-private (de standaard, geen sleutelwoord).
Alles public maken vernietigt inkapseling. Standaard op het meest restrictieve niveau en verbreed alleen wanneer een echte behoefte ontstaat.
Access modifiers zijn het concrete gereedschap dat inkapseling van een principe omzet in een regel die de compiler afdwingt.
Een klein openbaar oppervlak betekent dat minder code van internals kan afhangen, dus je kunt vrij refactoren zonder bellers te breken.