Access modifiers کلاس کے members کی نمائندگی کو کنٹرول کرتے ہیں، encapsulation کو نافذ کرتے ہوئے اس بات کو محدود کرتے ہیں کہ کون انہیں پڑھ سکتا ہے یا کال کر سکتا ہے۔
Access modifiers کلاس کے members کی نمائندگی کو کنٹرول کرتے ہیں، encapsulation کو نافذ کرتے ہوئے اس بات کو محدود کرتے ہیں کہ کون انہیں پڑھ سکتا ہے یا کال کر سکتا ہے۔
| Modifier | کہاں سے accessible ہے |
|---|
public | کہیں بھی |
protected | کلاس اور اس کی subclasses سے |
private | صرف declaring کلاس کے اندر |
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 ہے تو کوئی بھی باہری کوڈ اسے خراب نہیں کر سکتا؛ public 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 میں کوئی enforced private نہیں ہے — یہ naming conventions پر منحصر ہے۔ Java/C# compile time پر modifiers کو enforce کرتے ہیں۔ Java میں package-private (default، کوئی keyword نہیں) بھی ہے۔
ہر چیز کو public بنانا encapsulation کو ختم کر دیتا ہے۔ سب سے زیادہ محدود سطح سے شروع کریں اور صرف اس وقت وسیع کریں جب حقیقی ضرورت ہو۔
Access modifiers وہ ٹھوس ٹول ہیں جو encapsulation کو ایک اصول سے ایک enforced قاعدے میں بدل دیتے ہیں جو compiler چیک کرتا ہے۔
ایک چھوٹی public سطح کا مطلب ہے کہ کم کوڈ internals پر منحصر ہو سکتا ہے، تو آپ آزادانہ طور پر refactor کر سکتے ہیں بغیر callers کو توڑے۔