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
Post a Comment