Pääsynmuuttujat hallitsevat luokan jäsenten näkyvyyttä ja pakottavat kapseloinnin rajoittamalla sitä, kuka voi lukea tai kutsua niitä.
Pääsynmuuttujat hallitsevat luokan jäsenten näkyvyyttä ja pakottavat kapseloinnin rajoittamalla sitä, kuka voi lukea tai kutsua niitä.
| Modifier | Accessible from |
|---|
public | Mistä tahansa |
protected | Luokka ja sen aliluokat |
private | Vain ilmoittavan luokan sisällä |
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 on private, joten ulkoinen koodi ei voi vahingoittaa sitä; julkinen getter on ainoa ikkuna.
class Demo:
def __init__(self):
self.public = 1
self._protected = 2 # convention only ("don't touch")
self.__private = 3 # name-mangled to _Demo__private
Pythonilla ei ole pakotettu private — se perustuu nimeämiskäytäntöihin. Java/C# pakottavat muuttujat kääntöaikana. Javalla on myös package-private (oletus, ei avainsanaa).
Tehdä kaiken public kumoaa kapseloinnin. Aloita rajoittavimmalla tasolla ja laajenna vain kun todellinen tarve ilmaantuu.
Pääsynmuuttujat ovat konkreettinen väline, joka muuttaa kapseloinnin periaatteesta pakotettavaksi säännöksi, jonka kääntäjä tarkistaa.
Pieni julkinen pinta-ala tarkoittaa, että vähemmän koodia voi riippua sisäisistä tekijöistä, joten voit refaktoroida vapaasti ilman kutsujien rikkomista.