Kotlin-এ Operator Overloading – মজার ভাষায় সহজ ব্যাখ্যা!
🧠 Kotlin-এ Operator Overloading – মজার ভাষায় সহজ ব্যাখ্যা! 🚀
Kotlin-এ *অপারেটর (+, -, , /, %, ==, >, <, ++) ইত্যাদি আমরা নিজেদের ক্লাসের জন্য কাস্টম লজিক দিয়ে ওভারলোড করতে পারি! মানে, যেভাবে + দিয়ে সংখ্যা যোগ করি, একইভাবে + দিয়ে নিজের বানানো অবজেক্টও যোগ করা যাবে! 😍
📌 ১. সাধারণ ভাবে অপারেটর কী কাজ করে?
আমরা + ব্যবহার করলে দুই সংখ্যা যোগ হয়:
val sum = 5 + 10
println(sum) // 👉 15
কিন্তু, যদি আমরা নিজের বানানো Money ক্লাসের জন্য + চালাতে চাই? 🤔
val money1 = Money(10)
val money2 = Money(20)
val total = money1 + money2 // এটা কিভাবে সম্ভব? 😲
এখানে অপারেটর ওভারলোডিং ব্যবহার করতে হবে! 🚀
🛠️ ২. Operator Overloading কিভাবে কাজ করে?
কোনো অপারেটর ওভারলোড করতে হলে operator কিওয়ার্ড ব্যবহার করতে হবে। 🎯
✅ + অপারেটর ওভারলোড করা (Custom Addition)
class Money(val amount: Int) {
operator fun plus(other: Money): Money {
return Money(amount + other.amount) // নতুন Money অবজেক্ট ফেরত দিবে
}
}
fun main() {
val money1 = Money(10)
val money2 = Money(20)
val total = money1 + money2 // ✅ এখন এটা কাজ করবে!
println(total.amount) // 👉 30
}
✅ এখন money1 + money2 চালালে plus() মেথড কাজ করবে! 🔥
✅ - অপারেটর ওভারলোড করা (Custom Subtraction)
class Money(val amount: Int) {
operator fun minus(other: Money): Money {
return Money(amount - other.amount)
}
}
fun main() {
val money1 = Money(50)
val money2 = Money(30)
val remaining = money1 - money2
println(remaining.amount) // 👉 20
}
✅ money1 - money2 এর কাজ আমাদের নিয়ন্ত্রণে! 🔥
✅ * অপারেটর ওভারলোড করা (Custom Multiplication)
class Money(val amount: Int) {
operator fun times(multiplier: Int): Money {
return Money(amount * multiplier)
}
}
fun main() {
val money = Money(10)
val result = money * 3
println(result.amount) // 👉 30
}
✅ এখন money * 3 সম্ভব কারণ times() মেথড আছে!
✅ == ও != অপারেটর ওভারলোড করা (Custom Equality)
class Money(val amount: Int) {
operator fun equals(other: Any?): Boolean {
return other is Money && this.amount == other.amount
}
}
fun main() {
val money1 = Money(50)
val money2 = Money(50)
val money3 = Money(30)
println(money1 == money2) // 👉 true
println(money1 == money3) // 👉 false
}
✅ == দিয়ে এখন আমরা নিজের শর্ত অনুযায়ী তুলনা করতে পারছি!
✅ > এবং < অপারেটর ওভারলোড করা (Comparison)
class Money(val amount: Int) {
operator fun compareTo(other: Money): Int {
return this.amount - other.amount
}
}
fun main() {
val money1 = Money(100)
val money2 = Money(50)
println(money1 > money2) // 👉 true
println(money1 < money2) // 👉 false
}
✅ এখন money1 > money2 ব্যবহার করলে compareTo() মেথড চালু হবে! 🔥
📌 ৩. ++ ও -- অপারেটর ওভারলোড করা (Increment & Decrement)
class Money(var amount: Int) {
operator fun inc(): Money {
return Money(amount + 1)
}
operator fun dec(): Money {
return Money(amount - 1)
}
}
fun main() {
var money = Money(10)
money++
println(money.amount) // 👉 11
money--
println(money.amount) // 👉 10
}
✅ money++ ব্যবহার করলে inc() মেথড চালু হবে!
🚀 Operator Overloading Table – কোন অপারেটরের জন্য কোন মেথড?
| Operator | Function Name |
|---|---|
+ |
plus() |
- |
minus() |
* |
times() |
/ |
div() |
% |
rem() |
++ |
inc() |
-- |
dec() |
== |
equals() |
<, >, <=, >= |
compareTo() |
🔥 শেষ কথা – কেন Operator Overloading দরকার?
✅ আপনার নিজস্ব অবজেক্টের জন্য +, -, *, ==, > ইত্যাদি তৈরি করা যায়!
✅ কোড অনেক ক্লিন হয়, কারণ জটিল মেথড কল না করেই কাজ করা যায়!
✅ ব্যবহারকারীর জন্য সহজ এবং বেশি রিডেবল!
Comments
Post a Comment