Kotlin ক্লাসে Properties – সহজভাবে সব কিছু শিখুন!
🧠 Kotlin ক্লাসে Properties – সহজভাবে সব কিছু শিখুন! 🚀
কোনো ক্লাসের ভেরিয়েবল বা বৈশিষ্ট্য (attribute) কে Property বলা হয়। Kotlin-এ প্রপার্টি সাধারণ ভেরিয়েবল থেকেও শক্তিশালী কারণ এতে getter, setter, custom logic, backing field ইত্যাদি ব্যবহার করা যায়! 🏗️
📌 Basic Property – সাধারণ ভেরিয়েবল 🔥
class Person {
var name: String = "Unknown" // Property
}
fun main() {
val person = Person()
println(person.name) // 👉 Unknown
person.name = "Alice"
println(person.name) // 👉 Alice
}
✅ name হলো একটি property
✅ এটি পড়াও যায় (getter) এবং আপডেটও করা যায় (setter)
🛠️ Read-Only Property (val) – শুধু পড়া যাবে, পরিবর্তন করা যাবে না! 🚀
class Person {
val country: String = "Bangladesh" // Read-only property
}
fun main() {
val person = Person()
println(person.country) // 👉 Bangladesh
// person.country = "India" ❌ (Error! Read-only)
}
✅ val ব্যবহার করলে সেটার মান পরিবর্তন করা যাবে না।
🚀 Custom Getter – যখন দরকার ডাটা প্রসেসিং!
class Person(val birthYear: Int) {
val age: Int
get() = 2024 - birthYear // Custom getter
}
fun main() {
val person = Person(2000)
println(person.age) // 👉 24
}
✅ age আসলে কোনো স্টোরড ভ্যালু না, এটি রিয়েল টাইম ক্যালকুলেশন! 🔥
🛠️ Custom Setter – যখন মান আপডেট করার সময় শর্ত দরকার!
class Person {
var name: String = "Unknown"
set(value) {
field = value.uppercase() // Setter - সবসময় Uppercase হবে
}
}
fun main() {
val person = Person()
person.name = "Alice"
println(person.name) // 👉 ALICE
}
✅ এখানে set(value) → যখন ইউজার name সেট করবে, তখন সেট UPPERCASE হয়ে যাবে!
🏗️ Backing Field (field) – প্রপার্টির আসল স্টোরেজ!
class Person {
var age: Int = 0
set(value) {
if (value > 0) field = value // শুধুমাত্র পজিটিভ মান সেট করা যাবে
}
}
fun main() {
val person = Person()
person.age = -5
println(person.age) // 👉 0 (Error হয়নি, কারণ -5 সেট করা হয়নি!)
}
✅ field হচ্ছে ব্যাকিং ফিল্ড → আসল ভ্যালু সংরক্ষণ করে!
✅ setter-এর মধ্যে শর্ত চেক করে, invalid ভ্যালু আটকে দিতে পারি!
🔒 Late Initialization (lateinit) – দেরিতে মান সেট করব!
class Person {
lateinit var name: String // Initialize করবো পরে
}
fun main() {
val person = Person()
person.name = "Alice" // দেরিতে ইনিশিয়ালাইজ করা হল
println(person.name) // 👉 Alice
}
✅ lateinit ব্যবহার করলে অবজেক্ট তৈরি করার সময় ভ্যালু দেওয়া লাগবে না!
🛑 Lazy Initialization (lazy) – প্রথমবার অ্যাক্সেস করলে লোড হবে! 🚀
class Person {
val info: String by lazy {
println("Computing...")
"Hello Kotlin!"
}
}
fun main() {
val person = Person()
println("Before accessing info")
println(person.info) // 👉 Computing... তারপর "Hello Kotlin!"
println(person.info) // 👉 "Hello Kotlin!" (ফিরে আসবে, আবার হিসাব করবে না!)
}
✅ lazy ব্যবহার করলে প্রথমবার অ্যাক্সেস করার সময়ই ক্যালকুলেশন হবে!
✅ বারবার কল করলে আগের ভ্যালু রিটার্ন করবে, নতুন করে হিসাব করবে না!
🚀 Summary:
| Property Type | Read/Write | Example |
|---|---|---|
| var | Read & Write | var name: String |
| val | Read-only | val country: String |
| Custom Getter | শুধু Read | get() = 2024 - birthYear |
| Custom Setter | কাস্টম লজিক সহ Write | set(value) { field = value.uppercase() } |
| Backing Field | মূল মান সংরক্ষণ করে | field |
| lateinit | দেরিতে ইনিশিয়ালাইজ | lateinit var name: String |
| lazy | প্রথমবার অ্যাক্সেস করলে তৈরি হয় | val info: String by lazy { ... } |
🔥 Final Thought
Kotlin-এ properties অনেক বেশি flexible এবং powerful! আমরা এগুলো দিয়ে getter-setter, data validation, lazy loading, late initialization সব কিছু সহজেই করতে পারি! 🚀
👉 এই বিষয়গুলো ভালোভাবে আয়ত্ত করলে Kotlin-এর ক্লাস আরও সহজে বোঝা যাবে! 😃🔥
Comments
Post a Comment