Τροποποιητές πρόσβασης ελέγχουν την ορατότητα των μελών της κλάσης, επιβάλλοντας την ενθυλάκωση περιορίζοντας ποιος μπορεί να τα διαβάσει ή να τα καλέσει.
| Modifier | Accessible from |
|---|
public | Παντού |
protected | Η κλάση και οι υποκλάσες της |
private | Μόνο εντός της δηλώνουσας κλάσης |
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 είναι private άρα κανένας εξωτερικός κώδικας δεν μπορεί να τη διαφθείρει· ο δημόσιος getter είναι το μόνο παράθυρο.
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 δεν έχει επιβεβλημένο private — βασίζεται στις σύμβάσεις ονοματοθεσίας. Java/C# επιβάλλουν τροποποιητές κατά τη σύνταξη. Το Java έχει επίσης package-private (το προεπιλογή, χωρίς λέξη κλειδί).
Για να κάνετε όλα public αναιρεί την ενθυλάκωση. Ξεκινήστε με το περιοριστικότερο επίπεδο και διευρύνετε μόνο όταν εμφανίζεται πραγματική ανάγκη.
Οι τροποποιητές πρόσβασης είναι το συγκεκριμένο εργαλείο που μετατρέπει την ενθυλάκωση από αρχή σε ένας επιβεβλημένος κανόνα που ελέγχει ο μεταγλωττιστής.
Μια μικρή δημόσια επιφάνεια σημαίνει ότι λιγότερος κώδικας μπορεί να εξαρτάται από τα εσωτερικά, έτσι μπορείτε να ανασχεδιάσετε ελεύθερα χωρίς να σπάσετε καλούντες.