Access Modifiers
👉 অ্যাক্সেস মডিফায়ার কী?
ক্লাসের ভেতরের প্রপার্টি বা মেথডগুলো সব জায়গা থেকে অ্যাক্সেস করা উচিত না। কোনটি কেবল ক্লাসের ভিতরে থাকবে, কোনটি বাইরে থেকেও অ্যাক্সেস করা যাবে — সেটা ঠিক করতেই Access Modifiers ব্যবহৃত হয়। TypeScript-এ আমরা মূলত ৩ ধরণের access modifier পাই: public
, private
, এবং protected
।
✅ প্রকারভেদ:
Modifier | Access Level | ব্যবহার কবে |
---|---|---|
public | যেকোনো জায়গা থেকে অ্যাক্সেসযোগ্য | ক্লাসের বাইরে, ভিতরে, subclass-এ |
private | শুধুমাত্র সেই ক্লাসের ভিতরে অ্যাক্সেসযোগ্য | বাইরে থেকে দেখা বা পরিবর্তন করা যায় না |
protected | ক্লাস ও তার subclass (inherited ক্লাস)-এ অ্যাক্সেসযোগ্য | subclass অ্যাক্সেস করতে পারবে, কিন্তু বাইরে থেকে নয় |
🏦 বাস্তব উদাহরণ: Bank Account সিস্টেম
class Bankaccount {
public readonly id: number;
public name: string;
protected _balance: number; // convention: protected/private হলে _ ব্যবহার করা হয়
constructor(id: number, name: string, balance: number) {
this.id = id;
this.name = name;
this._balance = balance;
}
Adddeposit(amount: number) {
this._balance = this._balance + amount;
}
getBalance() {
return this._balance;
}
}
const Poorpeopleact = new Bankaccount(1, "Mr.Karim", 5000);
console.log(Poorpeopleact.id); // ✅ public ও readonly, তাই বাইরে থেকে দেখা যাবে কিন্তু পরিবর্তন করা যাবে না
// ❌ Poorpeopleact._balance = 10000; // Error: কারণ এটি protected
Poorpeopleact.Adddeposit(500);
console.log(Poorpeopleact.getBalance());
🔍 বিশ্লেষণ (কেন modifier ব্যবহার করবো?):
-
readonly id
:- প্রতিটি ব্যাঙ্ক অ্যাকাউন্টের একটি ইউনিক
id
থাকে, যেটা একবার সেট হয়ে গেলে পরিবর্তন হওয়া উচিত না। - তাই এটা
readonly
রাখা হয়েছে — constructor-এ একবার সেট করা যাবে, পরে আর না।
- প্রতিটি ব্যাঙ্ক অ্যাকাউন্টের একটি ইউনিক
-
public name
:- ইউজারের নাম প্রয়োজনে বাইরে থেকেও দেখা বা আপডেট করা লাগতে পারে, তাই এটিকে
public
রাখা হয়েছে।
- ইউজারের নাম প্রয়োজনে বাইরে থেকেও দেখা বা আপডেট করা লাগতে পারে, তাই এটিকে
-
protected _balance
:- ব্যালেন্স sensitive data, সরাসরি বাইরে থেকে এর মান পরিবর্তন করলে ঝুঁকি হতে পারে।
- প্রফেশনালি এরকম ডেটা update করার জন্য নির্দিষ্ট মেথড (যেমন:
Adddeposit
) ব্যবহার করা উচিত। - আমরা চাইলে
private
করতাম, কিন্তু subclass থেকে access লাগবে বলেprotected
রাখা হয়েছে।
🧒 Subclass Example: Student Account
class StudentAccount extends Bankaccount {
constructor(id: number, name: string, balance: number) {
super(id, name, balance);
}
getStudentBalance() {
return this._balance; // ✅ subclass থেকে protected প্রপার্টি অ্যাক্সেস করা যায়
}
}
const student = new StudentAccount(2, "Student Rahim", 1000);
console.log(student.getStudentBalance());
✨ কখন কেন modifier ব্যবহার করবো?
Modifier | কখন ব্যবহার করবেন? |
---|---|
public | যখন প্রপার্টি বা মেথডটি বাইরে থেকেও দরকার হতে পারে |
private | যখন কোনো ডেটা/মেথড strictly ক্লাসের ভেতরে সীমাবদ্ধ রাখতে চান |
protected | যখন subclass থেকে অ্যাক্সেস লাগবে, কিন্তু বাইরের কেউ যেন না পারে |
readonly | যখন কোনো ভ্যালু একবার সেট হওয়ার পর আর পরিবর্তন না হওয়াই ভালো (যেমন: id) |
✍🏼
এইভাবে Access Modifier ব্যবহার করে আপনি আপনার ক্লাসের ভিতরের ডেটাকে নিরাপদ রাখতে পারেন এবং অপ্রয়োজনীয় এক্সপোজার বা রিস্ক এড়াতে পারেন।
Last updated on