Kotlin-এ Inheritance কিভাবে কাজ করে?
🎯 Kotlin Inheritance – ব্রেইন-ফ্রেন্ডলি ব্যাখ্যা!
🧠 Inheritance মানে কী?
👉 ধরুন, আপনার বাবা একজন শিক্ষক 👨🏫 এবং আপনি তাঁর কিছু গুণ পেয়েছেন – যেমন ভালো পড়ানো, ধৈর্য ইত্যাদি!
🔹 Inheritance = একটি ক্লাস অন্য ক্লাস থেকে বৈশিষ্ট্য (properties) ও ফাংশন (methods) পাওয়া!
✅ General → Specific:
Vehicle(সাধারণ) →Car🚗,Bike🏍️ (বিশেষ)Animal(সাধারণ) →Dog🐶,Cat🐱 (বিশেষ)
✅ "Is-a" Relationship:
Caris aVehicleDogis anAnimal
🚀 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
Post a Comment