A hozzáférési módosítók az osztálytag-ok láthatóságát szabályozzák, az encapsulationt az által érvényesítve, hogy korlátozottá teszik, ki olvashat vagy hívhat.
| Módosító | Hozzáférhető innen |
|---|
public | Bárhonnan |
protected | Az osztály és altípusai |
private | Csak a deklaráló osztályon belül |
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;
}
}
A salary privát, így a külső kód nem ronthatja el; a nyilvános getter az egyetlen ablak.
class Demo:
def __init__(self):
self.public = 1
self._protected = 2 # convention only ("don't touch")
self.__private = 3 # name-mangled to _Demo__private
A Python-nak nincs kényszerített privát – elnevezési konvenciókon alapul. Java/C# a fordítási időben kényszerítik a módosítókat. Java-nak van még package-private is (az alapértelmezett, nincs kulcsszó).
Minden public tenni az encapsulation-t lerontja. Az legresztiktívebb szinthez adjon alapértelmezettöt, és csak akkor bővítsen, ha valódi szükség merül fel.
A hozzáférési módosítók a konkrét eszköz, amely az encapsulation-t az alapelvből egy érvényes szabállyá alakítja, amelyet a fordító ellenőriz.
A kis nyilvános felület azt jelenti, hogy kevesebb kód függ az internál részletektől, így szabadon refaktorálhat a hívók megtörése nélkül.