Åtkomstmodifierare kontrollerar synligheten för klassmedlemmar och tillämpar inkapsling genom att begränsa vem som kan läsa eller anropa dem.
Åtkomstmodifierare kontrollerar synligheten för klassmedlemmar och tillämpar inkapsling genom att begränsa vem som kan läsa eller anropa dem.
| Modifierare | Åtkomlig från |
|---|
public | Överallt |
protected | Klassen och dess underklasser |
private | Endast inom den deklarerande klassen |
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 är privat så ingen extern kod kan korruptera den; den offentliga gettern är det enda fönstret in.
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 har ingen tvingad private — det förlitar sig på namngivningskonventioner. Java/C# tillämpar modifierare vid kompileringstid. Java har också package-private (standard, ingen nyckelord).
Att göra allt public undergräver inkapsling. Utgå från den mest restriktiva nivån och utöka endast när ett verkligt behov uppstår.
Åtkomstmodifierare är det konkreta verktyg som gör inkapsling från en princip till en regel som kompilatorn kontrollerar.
En liten offentlig yta betyder att mindre kod beror på internals, så du kan omstrukturera fritt utan att bryta anropare.