đ¯ When to use which - Inheritance, Abstract Class, Interface
āĻাāĻ, āĻāĻ āϤোāĻŽাāϰ āĻŽাāĻĨাā§ Inheritance, Abstract Class, Interface—āĻāĻ āϤিāύāĻা āĻিāύিāϏ āĻāĻŽāύāĻাāĻŦে āĻĸুāĻিā§ে āĻĻেāĻŦো, āϝেāύ āϤুāĻŽি āĻĒ্āϰāĻেāĻ্āĻ āĻŦাāύাāύোāϰ āϏāĻŽā§ āĻāĻ āϏেāĻেāύ্āĻĄেāĻ āĻুāϞ āύা āĻāϰো! đ
āĻāϞো, āĻāĻāĻĻāĻŽ Brain-Friendly + Project Example āĻĻিā§ে āĻŦুāĻি। đ
đ¯ āĻāĻে āĻāĻāĻু āϏāĻšāĻāĻাāĻŦে āĻŽāύে āϰাāĻো:
| āĻিāύিāϏ | āĻŽাāύে āĻী? |
|---|---|
| đ§Ŧ Inheritance | āĻŦাāĻŦা-āĻŽাāϰ āĻŽāϤো āĻুāĻŖ (class āĻĨেāĻে class-āĻ āύেāĻā§া) |
| đē Abstract Class | āĻāϧা āĻĒ্āϰāϏ্āϤুāϤ āĻাঁāĻ ➡️ āĻিāĻু āĻাāĻ āĻāĻে āĻĨেāĻেāĻ āĻāϰে āĻĻিā§েāĻে |
| đ Interface | āĻুāĻ্āϤিāĻĒāϤ্āϰ ➡️ "āϤুāĻŽি āĻāĻ āĻাāĻāĻুāϞো āĻāϰāĻŦে, āĻিāĻাāĻŦে āĻāϰāĻŦে āϏেāĻা āϤোāĻŽাāϰ āĻŦ্āϝাāĻĒাāϰ!" |
✅ āĻŽāϏ্āϤিāώ্āĻে āĻাāĻĒ āĻĢেāϞাāϰ Project Example:
đ¤ āϧāϰো āĻāĻŽāϰা āĻāĻāĻা Ride Sharing App āĻŦাāύাāĻ্āĻি (Uber-āĻāϰ āĻŽāϤ)
đĨ ā§§. Inheritance ➡️ āϝāĻāύ Parent-āĻāϰ āĻŦৈāĻļিāώ্āĻ্āϝ āĻাāĻ
➡️ āϧāϰো, āĻāĻŽাāĻĻেāϰ app-āĻ āĻāĻে āĻĻুāĻ āϧāϰāύেāϰ āĻāĻāĻাāϰ:
-
Driver
-
Passenger
āĻāĻ āĻĻুāĻāύেāϰāĻ āĻিāĻু āĻāĻŽāύ āĻĢিāĻাāϰ āĻāĻে ➡️ āϝেāĻŽāύ login(), logout(), profileUpdate()।
āϤাāĻ āĻāĻŽāϰা āĻāĻāĻা Parent class ➡️ User āĻŦাāύাāĻŦো ➡️ āĻāϰāĻĒāϰ Driver āĻāϰ Passenger ➡️ āĻāĻ User āĻĨেāĻে āĻুāĻŖ āύিāĻŦে (inherit āĻāϰāĻŦে)।
// đ§Ŧ Parent class
open class User {
fun login() { println("User logged in") }
fun logout() { println("User logged out") }
}
// đ¨✈️ Child class
class Driver : User() {
fun acceptRide() { println("Ride accepted") }
}
// đ Child class
class Passenger : User() {
fun bookRide() { println("Ride booked") }
}
➡️ āĻāĻāύ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻŦ?
✔️ āϝāĻāύ common āĻŦৈāĻļিāώ্āĻ্āϝ āĻāĻে ➡️ āĻāĻāĻŦাāϰ āϞিāĻে āϏāĻŦ āĻŦাāĻ্āĻাāϰা inherit āĻāϰāĻŦে।
đĨ ⧍. Abstract Class ➡️ āϝāĻāύ āĻিāĻু āĻাāĻ ready āĻāϰে āĻĻিāϤে āĻাāĻ + āĻিāĻু āĻাāĻ āĻŦাāĻ্āĻাāϰা āĻāϰāĻŦেāĻ
➡️ āϧāϰো āĻāĻŽāϰা App-āĻ Vehicle āύাāĻŽে āĻāĻāĻা āĻাঁāĻ āĻŦাāύাāϤে āĻাāĻ
āϝেāĻাāύে:
-
āĻিāĻু āĻĢিāĻাāϰ ready āĻĨাāĻāĻŦে (āϝেāĻŽāύ stop() method)
-
āĻāϰ āĻিāĻু āĻĢিāĻাāϰ āϏāĻŦাāϰ āύিāĻāϏ্āĻŦ āĻšāĻŦে, āϝেāĻŽāύ ➡️ start() (car āĻāϰ bike-āĻ āĻāϞাāĻĻা āĻšāĻŦে)
// đē Abstract class ➡️ āĻāϧা āĻĒ্āϰāϏ্āϤুāϤ āĻাঁāĻ
abstract class Vehicle {
fun stop() { println("Vehicle stopped") }
abstract fun start() // āϏāĻŦাāĻ āύিāĻāϏ্āĻŦāĻাāĻŦে āĻāϰāĻŦে
}
// đ Car class
class Car : Vehicle() {
override fun start() { println("Car started") }
}
// đ️ Bike class
class Bike : Vehicle() {
override fun start() { println("Bike started") }
}
➡️ āĻāĻāύ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻŦ?
✔️ āϝāĻāύ āĻাāĻ ➡️ āĻিāĻু āĻĢিāĻাāϰ common (ready āĻĨাāĻāĻŦে) + āĻিāĻু āĻĢিāĻাāϰ āĻŦাāϧ্āϝāϤাāĻŽূāϞāĻ override āĻšāĻŦে।
đĨ ā§Š. Interface ➡️ āϝāĻāύ āĻুāĻ্āϤি āĻāϰাāϤে āĻাāĻ + Multiple Inheritance āĻĻāϰāĻাāϰ
➡️ āϧāϰো Payment System āĻāĻে ➡️ āĻāĻŽাāĻĻেāϰ app-āĻ ➡️ āĻāĻা āĻšāϤে āĻĒাāϰে ➡️ Bkash, Nagad, Card Payment āĻāϤ্āϝাāĻĻি।
āĻāĻাāύে āϏāĻŦাāĻāĻে pay() method āĻāϰāϤে āĻšāĻŦে ➡️ āĻিāύ্āϤু āĻে āĻিāĻাāĻŦে āĻāϰāĻŦে ➡️ āϏেāĻা āϝাāϰ āϝাāϰ āĻŦ্āϝাāĻĒাāϰ।
// đ Interface ➡️ āĻুāĻ্āϤিāĻĒāϤ্āϰ
interface Payment {
fun pay(amount: Double)
}
// đĻ Bkash payment
class Bkash : Payment {
override fun pay(amount: Double) {
println("Paid $amount by Bkash")
}
}
// đŗ Card payment
class Card : Payment {
override fun pay(amount: Double) {
println("Paid $amount by Card")
}
}
➡️ āĻāĻāύ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰāĻŦ?
✔️ āϝāĻāύ āĻাāĻ ➡️ āϏāĻŦাāĻ āĻāĻāĻা common āĻাāĻ āĻāϰāĻŦে (pay),
✔️ āĻāĻŦং āĻাāĻ ➡️ āĻāĻāĻ āĻ্āϞাāϏে multiple āĻুāĻ্āϤিāĻĒāϤ্āϰ (Multiple Interface implement āĻāϰা āϝাā§, multiple class āύা!)
✅ āĻূāĻĄ়াāύ্āϤ āĻŽāύে āϰাāĻাāϰ āĻŽāύ্āϤ্āϰ (Brain Shortcut):
| đ¯ āĻাāĻāϞে | đ āĻŦ্āϝāĻŦāĻšাāϰ āĻāϰো |
|---|---|
| āĻŦাāĻŦা-āĻŽাāϰ āĻŽāϤ āĻুāĻŖ āύিāϤে ➡️ | Inheritance |
| āĻিāĻু ready + āĻিāĻু āĻŦাāϧ্āϝāϤাāĻŽূāϞāĻ override ➡️ | Abstract Class |
| āĻļুāϧু āĻাāĻেāϰ āĻুāĻ্āϤি + Multiple inheritance ➡️ | Interface |
đ¯ āĻāĻŽাāϰ āĻĻেā§া āϏāĻšāĻ Rule:
đš Common āĻŦৈāĻļিāώ্āĻ্āϝ = Inheritance
đš Common āĻাāĻেāϰ āĻāϧা āĻাঁāĻ + āĻিāĻু āĻŦাāϧ্āϝāϤাāĻŽূāϞāĻ override = Abstract Class
đš Pure contract + multiple inheritance āĻĻāϰāĻাāϰ = Interface
đ Bonus: Project āĻ āϝāĻāύ āĻŽিāϞিā§ে āĻĻেāĻāĻŦা
| đą Feature | ➡️ Use What? |
|---|---|
| Driver vs Passenger ➡️ common āĻŦৈāĻļিāώ্āĻ্āϝ | ➡️ Inheritance |
| Vehicle ➡️ āĻিāĻু āĻাāĻ common, āĻিāĻু override āĻŦাāϧ্āϝāϤাāĻŽূāϞāĻ | ➡️ Abstract Class |
| Payment ➡️ āϏāĻŦাāĻ pay āĻāϰāĻŦে, āĻিāύ্āϤু āĻিāĻাāĻŦে āĻāϰāĻŦে āϏেāĻা āĻāϞাāĻĻা | ➡️ Interface |
✅ āĻāĻāύ āϤোāĻŽাāϰ āĻŽāϏ্āϤিāώ্āĻে āĻĸুāĻে āĻেāĻে āĻāύāĻļাāĻāϞ্āϞাāĻš!
➡️ āĻাāĻ, āĻাāĻāϞে āĻāĻāύ āĻāĻŽি āϤোāĻŽাāĻে Real World Interview āĻĒ্āϰāĻļ্āύāĻুāϞো āĻĻিā§ে āĻĻিāϤে āĻĒাāϰি āĻāĻ āϤিāύāĻা āύিā§ে।
āϝাāϤে āϤুāĻŽি āĻĒ্āϰ্āϝাāĻāĻিāϏ āĻāϰে āĻāĻুāϞো āĻাāĻāϰিāϰ āĻāύ্āĻাāϰāĻিāĻāϤেāĻ āĻাāĻিā§ে āĻĻিāϤে āĻĒাāϰো! đ
āĻাāĻāϞে āĻŦāϞো ➡️ "āĻš্āϝাঁ āĻাāĻ, āĻĒ্āϰāĻļ্āύ āĻĻাāĻ" ❤️
Comments
Post a Comment