Inheritance কী?
Inheritance মানে একটি class অন্য class থেকে properties ও methods উত্তরাধিকার সূত্রে পায়। extends কীওয়ার্ড ব্যবহৃত হয়।
- Parent Class (Base/Super class) — যে class থেকে নেওয়া হয়
- Child Class (Derived/Sub class) — যে class নেয়
মৌলিক উদাহরণ
// Parent Class
class Animal {
public $name;
public function __construct($name) {
$this->name = $name;
}
public function eat() {
echo "{$this->name} খাচ্ছে\n";
}
public function sleep() {
echo "{$this->name} ঘুমাচ্ছে\n";
}
}
// Child Class
class Dog extends Animal {
public function bark() {
echo "{$this->name} ঘেউ ঘেউ করছে\n";
}
}
class Cat extends Animal {
public function meow() {
echo "{$this->name} মিউ মিউ করছে\n";
}
}
$dog = new Dog("টমি");
$dog->eat(); // ✅ Parent থেকে পাওয়া
$dog->sleep(); // ✅ Parent থেকে
$dog->bark(); // ✅ নিজস্ব
$cat = new Cat("মিনি");
$cat->meow();
Method Override
Child class parent-এর method-কে নতুন করে লিখতে পারে।
class Animal {
public function sound() {
echo "কোনো শব্দ\n";
}
}
class Dog extends Animal {
// Override
public function sound() {
echo "ঘেউ ঘেউ\n";
}
}
class Cow extends Animal {
public function sound() {
echo "হাম্বা\n";
}
}
$d = new Dog();
$d->sound(); // ঘেউ ঘেউ
$c = new Cow();
$c->sound(); // হাম্বা
parent:: কীওয়ার্ড
Child class থেকে parent-এর method কল করতে parent:: ব্যবহার হয়।
class Vehicle {
public $brand;
public function __construct($brand) {
$this->brand = $brand;
echo "Vehicle তৈরি: {$brand}\n";
}
public function info() {
echo "ব্র্যান্ড: {$this->brand}\n";
}
}
class Car extends Vehicle {
public $model;
public function __construct($brand, $model) {
parent::__construct($brand); // parent-এর constructor কল
$this->model = $model;
}
public function info() {
parent::info(); // parent-এর info() কল
echo "মডেল: {$this->model}\n";
}
}
$car = new Car("Toyota", "Corolla");
$car->info();
// ব্র্যান্ড: Toyota
// মডেল: Corolla
Multi-level Inheritance
class A {
public function hello() { echo "A\n"; }
}
class B extends A {
public function greet() { echo "B\n"; }
}
class C extends B {
public function wave() { echo "C\n"; }
}
$c = new C();
$c->hello(); // ✅ (A থেকে)
$c->greet(); // ✅ (B থেকে)
$c->wave(); // ✅ (নিজের)
Final Class ও Final Method
// এই class-কে extend করা যাবে না
final class Singleton {
// ...
}
class Base {
// এই method override করা যাবে না
final public function critical() {
echo "কেউ override পারবে না\n";
}
}
⚠️ PHP multiple inheritance (একাধিক parent) সরাসরি সাপোর্ট করে না। তার বদলে Interface ও Trait ব্যবহৃত হয়।