Prieigos modifikatoriai kontroliuoja klasės narių matomumą, nustatydami inkapsuliavimą ribodami, kas gali juos skaityti ar iškviesti.
Prieigos modifikatoriai kontroliuoja klasės narių matomumą, nustatydami inkapsuliavimą ribodami, kas gali juos skaityti ar iškviesti.
| Modifikatorius | Prieinamas iš |
|---|
public | Bet kur |
protected | Klasės ir jos subklasių |
private | Tik deklaravusioje klasėje |
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 yra privatus, todėl išorinė nuosava negali jo sugadinti; viešoji geterio funkcija yra vienintelis įėjimo langas.
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 neturi privačios prieigos — jis remiasi pavadinimų susitarimais. Java/C# nustatau modifikatorius kompiliavimo metu. Java taip pat turi package-private (numatytą, be raktinio žodžio).
Visam padaryti public nutraukia inkapsuliavimą. Numatykite labiausiai ribotą lygį ir praplėskite tik kai yra tikra poreikis.
Prieigos modifikatoriai yra konkretus įrankis, kuris inkapsuliavimą paverčia iš principo į kompiliatoriaus tikrintą taisyklę.
Mažoji viešoji paviršiaus sritis reiškia, kad mažiau kodo gali priklausyti nuo vidinės struktūros, todėl galite laisvai refaktorinėti nenutraukus skambučius.