PHP অ্যাবস্ট্রাক্ট ক্লাস (Abstract Class)

প্রতিদিন সকালে অঙ্কের কড়া শিক্ষক আবু স্যার ক্লাসে এসেই বোর্ডে লিখতে ব্যস্ত হয়ে যান। মার্কার পেনের খসখস আওয়াজে সবাই সচকিত হয়ে ওঠে। পরক্ষনেই দেখে দেখে তুলতে শুরু করে যার যার নোটবুকে। কারণ একটু পরেই স্যার এসে সবার নোটবুক চেক করবেন, আর লেখা না পেলেই কান ধরে বেঞ্চির উপর! কিছু কিছু ম্যাথ তিনি খুবই সংক্ষেপে লেখেন, যেটা সবাইকে পুরো করতে হয়।
তবে সবার লেখা যে এক হয় তা না। কারো লেখা কাকের ঠ্যাং, আবার কারো লেখা বকের ঠ্যাং এর মত বাঁকা। সামনের বেঞ্চির মেয়েরা আবার দাগ টেনে সুন্দর করে লেখে, সাথে রঙ্গিন কলম দিয়ে গুরুত্বপূর্ন জায়গায় দাগায়, পাশে সর্টনোট লিখে রাখে স্যারের লেকচার শুনে।
PHP অ্যাবস্ট্রাক্ট ক্লাস অনেকটা আমাদের আবু স্যারের লেখার মতন। তাঁর লেখা কেউ সরাসরি নিতে পারে না বা instantiate করতে পারে না, কিন্তু দেখে দেখে লিখতে বা inherit করে child class তৈরি করতে পারে। এই child class কে বলে concrete class । স্যার যেমন কিছু ম্যাথ সংক্ষেপে লেখেন, তেমনি PHP অ্যাবস্ট্রাক্ট ক্লাসে অবশ্যই এক বা একাধিক মেথড থাকে যার বডিতে কোনো code define করা থাকেনা, শুধু Method Signature থাকে, অর্থাৎ শুধুমাত্র method এর নাম এবং parameter সমূহ declare করা থাকে। একে সবাই বলে abstract method (আবু স্যারের মেথড আরকি!) । Abstract class এ সাধারণ ক্লাসের মতো properties থাকতে পারে।
Child class এ কোন abstract method এর একটি parameter যোগ বা বাদ দেয়া যায় না। তবে default value সহ অতিরিক্ত parameter যোগ করা যায়। Abstract method গুলোর visibility একই অথবা বেশি open রাখতে হবে অর্থাৎ protected থাকলে protected অথবা public রাখতে হবে, abstract method কে private ঘোষণা করা যায় না, কারণ আবু স্যারের সব জ্ঞান সকলের জন্য, নিজের জন্য নয়।
Abstract class নিয়ে কয়েকটা উদাহরণ দেখা যাক:
উদাহরণ ১:

উদাহরণ ২:

সম সংখ্যক Parameter ছাড়া child class এ implement করলে নিচের মতো এরর দেখাবেঃ

উদাহরণ ৩:

আজ এই পর্যন্তই। সবাই ভাল থাকুন।