Access modifiers kontrollerer synligheten av class members og håndhever innkapsling ved å begrense hvem som kan lese eller kalle dem.
Access modifiers kontrollerer synligheten av class members og håndhever innkapsling ved å begrense hvem som kan lese eller kalle dem.
| Modifier | Tilgjengelig fra |
|---|
public | Overalt |
protected | Klassen og dens underklasser |
private | Kun innenfor den erklærende 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 er privat så ingen ekstern kode kan ødelegge det; public getter er det eneste vinduet innover.
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 håndhevet privat — det stoler på navnekonvensjoner. Java/C# håndhever modifiers ved kompileringstid. Java har også package-private (standarden, ingen nøkkelord).
Å gjøre alt public motarbeider innkapsling. Standard til det mest restriktive nivået og utvide bare når et reelt behov dukker opp.
Access modifiers er det konkrete verktøyet som gjør innkapsling fra et prinsipp til en regel som kompilatoren håndhever.
En liten offentlig overflate betyr at mindre kode kan avhenge av internals, så du kan refaktorere fritt uten å ødelegge kallere.