Modifikatori pristupa kontroliraju vidljivost članova klase, primjenjujući enkapsulaciju ograničavanjem tko ih može pročitati ili pozvati.
| Modifikator | Dostupno iz |
|---|
public | Bilo gdje |
protected | Klasa i njene podklase |
private | Samo unutar deklarativne klase |
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 privatna pa vanjski kod ne može je pokvariti; javni getter je jedini prozor.
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 nema primijenjene privatne — oslanja se na dogovore imenovanja. Java/C# primjenjuju modifikatore tijekom kompiliranja. Java ima i package-private (zadana vrijednost, bez ključne reči).
Učiniti sve public poništava enkapsulaciju. Zadanu vrijednost postavite na najjednostavniju razinu i proširite samo kada se pojavi stvarna potreba.
Modifikatori pristupa su konkretan alat koji enkapsulaciju pretvara iz principa u primijenjeno pravilo koje kompajler provjerava.
Mala javna površina znači da manje koda može ovisiti o internom, pa možete slobodno refaktorirati bez prekida pozivaoca.