Skip to Content

Access Modifiers

👉 অ্যাক্সেস মডিফায়ার কী?

ক্লাসের ভেতরের প্রপার্টি বা মেথডগুলো সব জায়গা থেকে অ্যাক্সেস করা উচিত না। কোনটি কেবল ক্লাসের ভিতরে থাকবে, কোনটি বাইরে থেকেও অ্যাক্সেস করা যাবে — সেটা ঠিক করতেই Access Modifiers ব্যবহৃত হয়। TypeScript-এ আমরা মূলত ৩ ধরণের access modifier পাই: public, private, এবং protected

✅ প্রকারভেদ:

ModifierAccess 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