Modificatorii de acces controlează vizibilitatea membrilor clasei, aplicând încapsularea prin limitarea cine poate să le citească sau să le apeleze.
Modificatorii de acces controlează vizibilitatea membrilor clasei, aplicând încapsularea prin limitarea cine poate să le citească sau să le apeleze.
| Modificator | Accesibil din |
|---|
public | Oriunde |
protected | Clasa și subclasele acesteia |
private | Doar în clasa declaratoare |
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 este private, deci niciun cod extern nu îl poate corompe; getter-ul public este singura fereastră înăuntru.
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 nu are private aplicat — se bazează pe convenții de numire. Java/C# aplică modificatori la compile time. Java are și package-private (implicit, fără cuvânt-cheie).
AFace totul public anulează încapsularea. Implicit la nivelul cel mai restrictiv și extindeți doar când apare o nevoie reală.
Modificatorii de acces sunt instrumentul concret care transformă încapsularea dintr-un principiu într-o regulă pe care compilatorul o aplică.
O mică suprafață publică înseamnă că mai puțin cod poate depinde de internals, deci puteți refactoriza liber fără a rupe apelatorii.