Erişim belirleyicileri sınıf üyelerinin görünürlüğünü denetler ve kimin bunları okuyabileceğini veya çağırabileceğini sınırlandırarak kapsüllemeyi zorunlu kılar.
Erişim belirleyicileri sınıf üyelerinin görünürlüğünü denetler ve kimin bunları okuyabileceğini veya çağırabileceğini sınırlandırarak kapsüllemeyi zorunlu kılar.
| Belirleyici | Buradan erişilebilir |
|---|
public | Her yerden |
protected | Sınıf ve alt sınıflarından |
private | Yalnızca bildirilen sınıfın içinden |
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 private olduğu için dış kod onu bozmaya alamaz; public getter tek giriş noktasıdır.
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 zorlanmış private değildir — adlandırma kurallarına dayanır. Java/C# belirleyicileri derleme zamanında zorlar. Java ayrıca package-private (varsayılan, anahtar sözcük yok) değerine sahiptir.
Her şeyi public yapmak kapsüllemeni bozar. En kısıtlayıcı seviyeyle başlayın ve yalnızca gerçek bir ihtiyaç ortaya çıktığında genişletin.
Erişim belirleyicileri, kapsüllemeyi bir ilkeden derleyici tarafından denetlenen bir kurala dönüştüren somut araçtır.
Küçük bir public yüzey alanı, daha az kodun dahili kısımlara bağlı olduğu anlamına gelir; bu nedenle arayan işlevleri kırmadan özgürce yeniden düzenleyebilirsiniz.