Kotlin-এ Inheritance কিভাবে কাজ করে?

 

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

🧠 Inheritance মানে কী?

👉 ধরুন, আপনার বাবা একজন শিক্ষক 👨‍🏫 এবং আপনি তাঁর কিছু গুণ পেয়েছেন – যেমন ভালো পড়ানো, ধৈর্য ইত্যাদি!

🔹 Inheritance = একটি ক্লাস অন্য ক্লাস থেকে বৈশিষ্ট্য (properties) ও ফাংশন (methods) পাওয়া!

General → Specific:

  • Vehicle (সাধারণ) → Car 🚗, Bike 🏍️ (বিশেষ)
  • Animal (সাধারণ) → Dog 🐶, Cat 🐱 (বিশেষ)

"Is-a" Relationship:

  • Car is a Vehicle
  • Dog is an Animal

🚀 Kotlin-এ Inheritance কিভাবে কাজ করে?

👉 Kotlin-এ কোনো class ডিফল্টভাবে Inheritance অনুমোদন করে না!
👉 open কীওয়ার্ড ব্যবহার করলে ক্লাস extend করা যাবে!


🎯 1️⃣ Simple Inheritance – Basic Concept

🔹 Example: Vehicle (মাস্টার ক্লাস) → Car (চাইল্ড ক্লাস)

// ✅ Parent/Base Class (Master Class)
open class Vehicle(val name: String) {
    fun start() {
        println("$name is starting... 🚗")
    }
}

// ✅ Child Class (Specific Class)
class Car(name: String, val brand: String) : Vehicle(name) {
    fun showBrand() {
        println("This car is a $brand!")
    }
}

// ✅ Object তৈরি এবং ব্যবহার!
fun main() {
    val myCar = Car("MyCar", "Toyota")
    myCar.start()     // ✅ Base class-এর ফাংশন ব্যবহার করা!
    myCar.showBrand() // ✅ নিজের ফাংশন ব্যবহার করা!
}

✅ Output:

MyCar is starting... 🚗
This car is a Toyota!

👉 Car ক্লাস Vehicle ক্লাস থেকে start() পেয়ে গেল! 😍


🎯 2️⃣ Method Override – বাবা-ছেলের ভিন্ন পদ্ধতি!

👉 Parent class-এর ফাংশন চাইল্ড class-এ পরিবর্তন করতে চাইলে override ব্যবহার করতে হয়!

Example: Vehicle এর start() আলাদা করা!

open class Vehicle {
    open fun start() {
        println("Vehicle is starting...")
    }
}

class Car : Vehicle() {
    override fun start() {  // ✅ Method Override!
        println("Car is starting with a key! 🚗")
    }
}

fun main() {
    val myCar = Car()
    myCar.start()  // ✅ Car এর নতুন version কাজ করবে!
}

✅ Output:

Car is starting with a key! 🚗

👉 এখন Car নিজের start() ফাংশন ব্যবহার করছে, Vehicle-এরটা না! 😍


🎯 3️⃣ Super Keyword – Parent Class-এর Function ব্যবহার করা!

👉 Child Class থেকে Parent Class-এর Function কল করতে super ব্যবহার হয়!

Example: Vehicle + Car 🚗

open class Vehicle {
    open fun start() {
        println("Vehicle is starting...")
    }
}

class Car : Vehicle() {
    override fun start() {
        super.start()  // ✅ Parent Class-এর ফাংশন কল!
        println("Car is starting with an engine! 🚗")
    }
}

fun main() {
    val myCar = Car()
    myCar.start()
}

✅ Output:

Vehicle is starting...
Car is starting with an engine! 🚗

👉 super.start() দিয়ে Parent-এর Function + নিজের Function দুটোই চলল! 😍


🎯 4️⃣ Constructor in Inheritance – Object বানানোর সময় মান সেট করা!

👉 Parent class-এর Constructor থাকলে Child class-কে সেটা দিতে হয়!

open class Vehicle(val name: String) {
    fun showName() {
        println("This is a $name!")
    }
}

class Car(name: String, val brand: String) : Vehicle(name) {
    fun showBrand() {
        println("Brand: $brand!")
    }
}

fun main() {
    val myCar = Car("Sports Car", "BMW")
    myCar.showName()  // ✅ Parent Class-এর ফাংশন!
    myCar.showBrand() // ✅ নিজের ফাংশন!
}

✅ Output:

This is a Sports Car!
Brand: BMW!

👉 Car-এর মধ্যে Vehicle-এর name সেট করা হয়েছে! 😍


🎯 5️⃣ Inheritance vs Composition – কখন কী ব্যবহার করবেন?

👉 Inheritance সবসময় ভালো না! অনেক সময় Composition ভালো!

Inheritance (Is-a Relationship):

  • যখন একটা ক্লাস পুরোপুরি অন্য ক্লাসের অংশ হয়!
  • Example: Car is a Vehicle 🚗

Composition (Has-a Relationship):

  • যখন একটা ক্লাস অন্য ক্লাসকে ব্যবহার করে!
  • Example: Car has an Engine 🔥

Example: Composition ব্যবহার করে!

class Engine {
    fun start() {
        println("Engine is starting... 🔥")
    }
}

class Car {
    private val engine = Engine() // ✅ Engine আলাদা Class!

    fun start() {
        engine.start()  // ✅ Composition ব্যবহার করে!
        println("Car is ready to go! 🚗")
    }
}

fun main() {
    val myCar = Car()
    myCar.start()
}

✅ Output:

Engine is starting... 🔥
Car is ready to go! 🚗

👉 এখন Car আলাদা Engine ক্লাস ব্যবহার করছে, Inheritance না! 😍


🎯 সংক্ষেপে:

বিষয় ব্যাখ্যা উদাহরণ
Inheritance কি? Parent class থেকে বৈশিষ্ট্য ও Function নেওয়া class Car : Vehicle()
"Is-a" Relationship যখন একটা ক্লাস অন্য ক্লাসের বিশেষ ধরনের হয় Car is a Vehicle
Method Override Parent-এর Function নতুন করে লেখা override fun start()
Super Keyword Parent-এর Function বা Property Access super.start()
Constructor Inheritance Parent-এর Constructor ব্যবহার class Car(name: String) : Vehicle(name)
Inheritance vs Composition Inheritance সবসময় ভালো না, Composition দরকার! Car has an Engine (Composition)

🚀 এখন আপনি Kotlin Inheritance মাস্টার! 🏆

👉 এবার কোড প্র্যাকটিস শুরু করে দিন! 😎🔥

Comments

Popular posts from this blog

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

🧠 Regex কী?

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