Kotlin Access Modifiers – ব্রেইন-ফ্রেন্ডলি ব্যাখ্যা!

 

🛡️ Kotlin Access Modifiers – ব্রেইন-ফ্রেন্ডলি ব্যাখ্যা!

🎯 Access Modifier বলতে বোঝায় একটি ভেরিয়েবল, ফাংশন বা ক্লাস কোথা থেকে এক্সেস করা যাবে আর কোথা থেকে নয়

Kotlin-এ ৪টি Access Modifier আছে:
1️⃣ public 👉 সব জায়গায় এক্সেসযোগ্য
2️⃣ private 👉 শুধু নিজের ক্লাসের ভিতরেই এক্সেসযোগ্য
3️⃣ protected 👉 নিজের ক্লাস + ইনহেরিট করা ক্লাসের ভিতরে এক্সেসযোগ্য
4️⃣ internal 👉 শুধু একই মডিউলের মধ্যে এক্সেসযোগ্য


🔹 1️⃣ public – সবার জন্য উন্মুক্ত!

👉 এটি Default Modifier (মানে, যদি কিছু না লেখেন, এটি ধরে নেওয়া হয়)

class Person {
    public var name: String = "John"  // 👀 Public: সব জায়গা থেকে এক্সেস করা যাবে
}

fun main() {
    val person = Person()
    println(person.name)  // ✅ Output: John
}

📌 এখানে:
name ভেরিয়েবল যেকোনো জায়গা থেকে এক্সেস করা যাবে কারণ এটি public


🔹 2️⃣ private – শুধুমাত্র নিজের ভিতরেই!

👉 কোনো ক্লাসের private মেম্বার সেই ক্লাসের বাইরে এক্সেস করা যাবে না।

class BankAccount {
    private var balance: Double = 1000.0  // 🔒 শুধু BankAccount ক্লাসের ভিতরেই অ্যাক্সেসযোগ্য

    fun getBalance(): Double {
        return balance
    }
}

fun main() {
    val account = BankAccount()
    // println(account.balance)  // ❌ Error: Cannot access 'balance'
    println(account.getBalance())  // ✅ Output: 1000.0
}

📌 এখানে:
balance ভেরিয়েবল প্রাইভেট, তাই বাইরে থেকে এক্সেস করা যাবে না।
getBalance() মেথড দিয়ে আমরা নিরাপদভাবে ব্যালেন্স দেখতে পারছি।


🔹 3️⃣ protected – নিজের + Inherited ক্লাসের জন্য!

👉 প্রাইভেটের মতোই, কিন্তু চাইল্ড ক্লাসেও ব্যবহার করা যাবে!

open class Animal {
    protected fun makeSound() {
        println("Animal makes a sound!")
    }
}

class Dog : Animal() {
    fun bark() {
        makeSound()  // ✅ Protected মেথড চাইল্ড ক্লাস থেকে এক্সেস করা যাচ্ছে
        println("Dog is barking!")
    }
}

fun main() {
    val dog = Dog()
    dog.bark()
    // dog.makeSound()  // ❌ Error: Protected মেথড বাইরে থেকে এক্সেস করা যাবে না!
}

📌 এখানে:
makeSound() প্রোটেক্টেড, তাই Dog ক্লাস এটিকে এক্সেস করতে পারছে।
কিন্তু main() ফাংশন থেকে makeSound() সরাসরি কল করা যাবে না!


🔹 4️⃣ internal – শুধু একই মডিউলের মধ্যে!

👉 একই মডিউলের বাইরে internal মেম্বার অ্যাক্সেস করা যাবে না।

internal class Car {
    internal var brand: String = "Toyota"
}

fun main() {
    val car = Car()
    println(car.brand)  // ✅ Output: Toyota (কারণ আমরা একই মডিউলের মধ্যে আছি)
}

📌 এখানে:
internal মানে এটি শুধু এই মডিউলের মধ্যে এক্সেস করা যাবে।
যদি অন্য মডিউল থেকে অ্যাক্সেস করতে চান, তাহলে Error আসবে!


🔥 Access Modifiers – তুলনামূলক চেকলিস্ট!

Modifier এক্সেস কোথায়? বাইরে থেকে এক্সেস করা যাবে? চাইল্ড ক্লাস থেকে? অন্য মডিউল থেকে?
public সব জায়গায় হ্যাঁ হ্যাঁ হ্যাঁ
private শুধু নিজের ক্লাসে না না না
protected নিজের + চাইল্ড ক্লাসে না হ্যাঁ না
internal একই মডিউলের মধ্যে হ্যাঁ (শুধু মডিউলের ভিতরে) হ্যাঁ (শুধু মডিউলের ভিতরে) না

🎯 সংক্ষেপে:

✔️ public 👉 সব জায়গায় অ্যাক্সেস করা যাবে।
✔️ private 👉 শুধু নিজের ক্লাসের ভিতরে অ্যাক্সেসযোগ্য।
✔️ protected 👉 নিজের + ইনহেরিট করা ক্লাসের মধ্যে এক্সেসযোগ্য।
✔️ internal 👉 শুধু একই মডিউলের মধ্যে অ্যাক্সেসযোগ্য।

এখন আপনি Kotlin Access Modifiers পুরো বুঝে গেছেন! 🚀🔥
💡 এবার নিজে প্র্যাকটিস করুন! 😎

Comments

Popular posts from this blog

AI (Artificial Intelligence) সহজভাবে বোঝার জন্য একদম মস্তিষ্ক-বান্ধব ব্যাখ্যা 🧠🤖

🧠 Regex কী?

Kotlin-এ ভেরিয়েবল ঘোষণা করার দুই উপায়