Modyfikatory dostępu kontrolują widoczność członków klasy, egzekwując hermetyzację poprzez ograniczenie tego, kto może ich odczytywać lub wywoływać.
| Modyfikator | Dostępny z |
|---|
public | Wszędzie |
protected | Klasy i jej podklasy |
private | Tylko w ramach deklarującej klasy |
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 jest private, więc żaden kod spoza klasy nie może go uszkodzić; publiczny getter to jedyne okno do wewnątrz.
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 nie wymusza private — opiera się na konwencjach nazewnictwa. Java/C# wymuszają modyfikatory w czasie kompilacji. Java ma również package-private (domyślnie, bez słowa kluczowego).
Uczynienie wszystkiego public unieważnia hermetyzację. Domyślnie wybierz poziom najbardziej restrykcyjny i poszerzaj jedynie gdy pojawi się rzeczywista potrzeba.
Modyfikatory dostępu to konkretne narzędzie, które zmienia hermetyzację z zasady w regułę wymuszaną przez kompilator.
Mała publiczna powierzchnia oznacza, że mniej kodu może zależeć od wewnętrznych szczegółów, więc możesz swobodnie refaktorować bez łamania kodu wywołującego.
Biblioteka pytań rekrutacyjnych IT ze szczegółowymi odpowiedziami — od Juniora do Seniora.
Wesprzyj