محددات الوصول تتحكم في ظهور أعضاء الفئة، وتفرض الكبسولة بتقييد من يمكنه قراءتها أو استدعاؤها.
محددات الوصول تتحكم في ظهور أعضاء الفئة، وتفرض الكبسولة بتقييد من يمكنه قراءتها أو استدعاؤها.
| 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 خاصة لذلك لا يمكن لأي كود خارجي إفساده؛ الـ 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 يهزم الكبسولة. ابدأ بالمستوى الأكثر تقييداً وأوسّع فقط عند ظهور حاجة حقيقية.
محددات الوصول هي الأداة الملموسة التي تحول الكبسولة من مبدأ إلى قاعدة مفروضة يتحقق منها المترجم.
مساحة عامة صغيرة تعني أن كوداً أقل يمكنه الاعتماد على التفاصيل الداخلية، لذا يمكنك إعادة الهيكلة بحرية دون كسر المستدعين.