Modifikátory přístupu řídí viditelnost členů třídy, vynucují zapouzdření omezením toho, kdo je může číst nebo volat.
| Modifier | Accessible from |
|---|
public | Kdekoli |
protected | Třída a její podtřídy |
private | Pouze v rámci deklarující třídy |
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 je private, takže žádný vnější kód jej nemůže poškodit; veřejný getter je jediným vstupním bodem.
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 nemá vynucené private — spoléhá se na konvence pojmenování. Java/C# vynucují modifikátory v čase překladu. Java má také package-private (výchozí, bez klíčového slova).
Udělat vše public neguje zapouzdření. Začněte s nejpřísnější úrovní a rozšiřujte pouze pokud se objeví skutečná potřeba.
Modifikátory přístupu jsou konkrétní nástroj, který změní zapouzdření z principu na vynucenou pravidlo, které kontroluje kompilátor.
Malá veřejná plocha znamená, že méně kódu se může spoléhat na vnitřnosti, takže můžete volně refaktorovat bez porušování volajících.