Polymorphism – কোডের সুপারপাওয়ার!

 

🤯 Polymorphism – কোডের সুপারপাওয়ার! 🚀

Polymorphism মানে "একাধিক রূপ"! 🦸‍♂️
একটি অবজেক্ট বা ফাংশন বিভিন্ন রকম আচরণ করতে পারে, পরিবর্তিত হয়ে নতুন রূপ নিতে পারে! 😲

Kotlin-এ Polymorphism হয় 👉
Method Overriding (উত্তরাধিকার নিয়ে নতুন রূপ দেওয়া)
Method Overloading (একই নামে বিভিন্ন কাজ করা)
Interfaces (বিভিন্ন রূপ দেওয়া)


🎭 1️⃣ Method Overriding – বাবা থেকে ছেলে আলাদা আচরণ শিখলো!

যখন একটি সাব-ক্লাস (child class), এর parent class-এর মেথড নতুনভাবে লিখে, তখন তাকে Method Overriding বলে!

// 🚗 Parent ক্লাস
open class Vehicle {
    open fun move() {
        println("যেকোনো যানবাহন চলছে 🚗")
    }
}

// 🏍️ Child ক্লাস: আলাদা করে চালাবে!
class Bike : Vehicle() {
    override fun move() {
        println("বাইক দ্রুত চলছে 🏍️💨")
    }
}

fun main() {
    val myVehicle: Vehicle = Bike()  // ✅ Parent টাইপ কিন্তু Bike-এর আচরণ!
    myVehicle.move()  // 🔥 Output: "বাইক দ্রুত চলছে 🏍️💨"
}

📌 এখানে:
✔️ Parent class Vehicle বলেছে, "আমি সব যানবাহনের জন্য সাধারণ নিয়ম দিবো" 🚗
✔️ Child class Bike বলেছে, "আমি আমার মতো চলবো!" 🏍️
✔️ move() মেথড Parent থেকে Override করে নতুন রূপ পেলো!


🎭 2️⃣ Method Overloading – এক নাম, আলাদা কাজ!

একই নামের ফাংশন, কিন্তু বিভিন্ন ইনপুট নিলে ভিন্নভাবে কাজ করবে!

class Calculator {
    fun add(a: Int, b: Int): Int {
        return a + b
    }

    fun add(a: Double, b: Double): Double {
        return a + b
    }

    fun add(a: String, b: String): String {
        return "$a $b"
    }
}

fun main() {
    val calc = Calculator()
    
    println(calc.add(5, 10))         // Output: 15
    println(calc.add(5.5, 10.2))     // Output: 15.7
    println(calc.add("Hello", "World")) // Output: Hello World
}

📌 এখানে:
✔️ add() একবার সংখ্যা যোগ করছে, আবার স্ট্রিং যোগ করছে!
✔️ একই ফাংশনের ভিন্ন রূপ (polymorphic behavior)!


🎭 3️⃣ Interface দিয়ে Polymorphism – একাধিক রূপ!

একটি অবজেক্ট একাধিক রূপ নিতে পারে (Interface ব্যবহার করে)

// 🎭 বিভিন্ন Role (Interfaces)
interface Singer {
    fun perform() = println("🎤 গান গাইছে")
}

interface Dancer {
    fun perform() = println("💃 নাচছে")
}

// 🎭 Person একসাথে Singer + Dancer হতে পারে!
class Rockstar : Singer, Dancer {
    override fun perform() {
        super<Singer>.perform()
        super<Dancer>.perform()
    }
}

fun main() {
    val artist = Rockstar()
    artist.perform()  
    // Output:
    // 🎤 গান গাইছে
    // 💃 নাচছে
}

📌 এখানে:
✔️ একটি অবজেক্ট একাধিক রূপ নিতে পারে!
✔️ Rockstar একসাথে Singer এবং Dancer দুইটাই হতে পারে!
✔️ একটি মেথড দুইভাবে কাজ করছে (Polymorphism)!


🎯 Polymorphism কেন দরকারি?

Flexible কোড – সহজেই পরিবর্তন করা যায়!
Code Reusability – একই কোড অনেক জায়গায় ব্যবহার করা যায়!
কমপ্লেক্স প্রোগ্রাম সহজভাবে তৈরি করা যায়!

📌 Polymorphism মানে একাধিক রূপ – যা কোডকে সুপারপাওয়ার দেয়! 🚀😃

Comments

Popular posts from this blog

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

🧠 Regex কী?

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