Pengubah akses mengawal keterlihatan anggota kelas, menerapkan enkapsulasi dengan membatasi siapa yang boleh membaca atau memanggilnya.
| Pengubah | Boleh diakses dari |
|---|
public | Di mana saja |
protected | Kelas dan subkelasnya |
private | Hanya dalam kelas yang mengisytiharkan |
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 adalah peribadi jadi tiada kod luaran dapat merosaknya; getter awam adalah satu-satunya tingkap masuk.
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 tidak mempunyai peribadi yang dikuat — ia bergantung pada konvensyen penamaan. Java/C# menguatkuasakan pengubah pada waktu kompilasi. Java juga mempunyai package-private (lalai, tiada kata kunci).
Menjadikan semuanya public mengalahkan enkapsulasi. Mulai dengan tahap paling ketat dan perluas hanya apabila keperluan sebenar muncul.
Pengubah akses adalah alat konkrit yang mengubah enkapsulasi daripada prinsip menjadi peraturan yang dipaksa oleh pengkompil.
Luas permukaan awam yang kecil bermakna kod yang lebih sedikit boleh bergantung pada dalaman, jadi anda boleh memfaktor semula dengan bebas tanpa memecahkan pemanggil.
Pustaka soalan temu duga IT dengan jawapan terperinci — daripada Junior hingga Senior.
Derma