PHP OOP – Abstract Classes (এবস্ট্রাক্ট ক্লাস)

PHP OOP – Abstract Classes (এবস্ট্রাক্ট ক্লাস)

Abstract Class হচ্ছে এমন একটি ক্লাস যেটি থেকে সরাসরি অবজেক্ট তৈরি করা যায় না। এটি মূলত একটি কাঠামো (Template) হিসেবে কাজ করে এবং সাবক্লাসগুলোকে নির্দিষ্ট মেথডগুলি অবশ্যই ইমপ্লিমেন্ট করতে বাধ্য করে।

PHP তে Abstract ক্লাস ব্যবহার করতে হলে abstract কীওয়ার্ড ব্যবহার করতে হয়। এছাড়াও, কোন মেথড যদি শুধুমাত্র ঘোষণা থাকে কিন্তু বডি না থাকে, তাহলে সেটিও abstract হিসেবে চিহ্নিত করতে হয়।

উদাহরণ ১: Simple Abstract Class


<?php
abstract class Animal {
    abstract public function makeSound();

    public function sleep() {
        echo "Sleeping...<br>";
    }
}

class Dog extends Animal {
    public function makeSound() {
        echo "Dog says: Woof!<br>";
    }
}

$dog = new Dog();
$dog->sleep();      // Inherited method
$dog->makeSound();  // Implemented method
?>
    

✅ এখানে Animal হচ্ছে একটি Abstract Class। makeSound() একটি Abstract Method যা Dog ক্লাসে অবশ্যই ইমপ্লিমেন্ট করা হয়েছে।

উদাহরণ ২: Multiple Child Classes


<?php
abstract class Shape {
    abstract public function area();
}

class Square extends Shape {
    private $length;

    public function __construct($length) {
        $this->length = $length;
    }

    public function area() {
        return $this->length * $this->length;
    }
}

class Circle extends Shape {
    private $radius;

    public function __construct($radius) {
        $this->radius = $radius;
    }

    public function area() {
        return 3.14 * $this->radius * $this->radius;
    }
}

$square = new Square(4);
$circle = new Circle(3);

echo "Square Area: " . $square->area() . "<br>";
echo "Circle Area: " . $circle->area();
?>
    

এখানে Shape একটি abstract ক্লাস, এবং এর দুইটি সাবক্লাস Square এবং Circle নিজ নিজ area() মেথড ইমপ্লিমেন্ট করেছে।

কেন ব্যবহার করবেন Abstract Class?

  • Template Design: এটি একটি নির্দিষ্ট কাঠামো নির্ধারণ করে দেয় যে কোন মেথডগুলো subclass এ থাকতে হবে।
  • Code Consistency: সব subclass একটি common behavior follow করে।
  • Partial Implementation: কিছু ফাংশন ডিফাইন করা থাকে, আবার কিছু subclass এ ইমপ্লিমেন্ট করতে হয়।

Abstract Class বনাম Interface

বিষয় Abstract Class Interface
Property Support হ্যাঁ না (PHP 7.4 পর্যন্ত)
Multiple Inheritance না হ্যাঁ
Concrete Method Allowed? হ্যাঁ না

টেকনিক্যাল নোটস:

  • Abstract ক্লাসে শুধুমাত্র abstract method থাকবে এমন নয়, concrete method ও থাকতে পারে।
  • Abstract class থেকে সরাসরি অবজেক্ট তৈরি করা যায় না।
  • Abstract method-এর কোনো body (কোড ব্লক) থাকে না।
  • Subclass এ সব abstract method implement করা বাধ্যতামূলক।

 

 

Leave a Reply