মেথড ওভাররাইডিং ক্লাসটি পলিটেকনিক [ Polytechnic] এর অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (বিষয় কোডঃ ৬৬৬৪১) (Object Oriented Programming Code 66641) বিষয় এর অংশ।
Table of Contents
মেথড ওভাররাইডিং
মেথড ওভাররাইডিং (Method Overriding) : পিএইচপিতে প্যারেন্ট ক্লাসের মেথড এবং প্রোপার্টিজ চাইল্ড ক্লাসে একসেস পাওয়া যায় এটাতো সবার জানা আছে।প্যারেন্ট ক্লাসের কোন মেথড যদি চাইল্ড ক্লাসে লিখেন এবং এখানে নতুন কিছু যোগ করে এই চাইল্ড ক্লাসকে instantiate করেন তাহলে যখন এই চাইল্ড ক্লাসের এই মেথড কল করবেন তখন আর প্যারেন্ট ক্লাসের মেথড এক্সিকিউট হবেনা।বরং একই নাম হওয়া স্বত্তেও চাইল্ড ক্লাসের মেথডটিই এক্সিকিউট হবে।যেমন:

01.
<?php
02.
03.
04.
class DepartmentInfo {
05.
06.
07.
public $departmentName;
08.
public $chairman;
09.
public $classRoom;
10.
public $numberOfStudents;
11.
12.
13.
public function __construct($dept, $chair, $room, $stdNumber) {
14.
$this->departmentName = $dept;
15.
$this->chairman = $chair;
16.
$this->classRoom = $room;
17.
$this->numberOfStudents = $stdNumber;
18.
}
19.
20.
21.
public function departmentActivity() {
22.
echo “Deartment of ” . $this->departmentName . ” arrange a tour in every year” . “<br/>”;
23.
}
24.
25.
26.
}
27.
28.
29.
class StatisticsDept extends DepartmentInfo {
30.
31.
32.
public $labsNumber;
33.
34.
35.
public function departmentActivity() {
36.
parent::departmentActivity();
37.
echo $this->departmentName . ” department publish a journal yearly <br/>”;
38.
}
39.
40.
41.
}
42.
43.
44.
class CseDept extends DepartmentInfo {
45.
46.
47.
public $labsNumber;
48.
public function departmentActivity() {
49.
parent::departmentActivity();
50.
echo $this->departmentName . ” department recently arranged a seminar on web development <br/>”;
51.
}
52.
public function programmingActivity() {
53.
echo “Department of ” . $this->departmentName . ” should arrange programming contest like other university” . “<br/>”;
54.
}
55.
56.
57.
}
58.
59.
60.
$statistics = new StatisticsDept(“Statistics”, “Dr. Rowshan Jahan”, 6, 300);
61.
62.
63.
$statistics->departmentActivity();
64.
$cse = new CseDept(“Computer Science and Engineering”, “Dr.Jugal Krishna Das”, 5, 300);
65.
$cse->departmentActivity();
66.
?>
আউটপুট:
Deartment of Statistics arrange a tour in every year
Statistics department publish a journal yearly
Deartment of Computer Science and Engineering arrange a tour in every year
Computer Science and Engineering department recently arranged a seminar on web development
ব্যাখ্যা:এখানে দেখুন প্যারেন্ট ক্লাসের departmentActivity মেথডটি চাইল্ড ক্লাসদুটিতে (StatisticsDept এবং CseDept) ওভাররাইড করা হয়েছে।
**প্যারেন্ট ক্লাস instantiate করে এই মেথড কল করুন,যে আউটপুট অন্যরকম আসবে।
**চাইল্ড ক্লাসদুটির ৩৬ এবং ৪৯ নম্বর লাইন তুলে দিয়ে কোড রান করান তাহলে প্যারেন্ট ক্লাসের কারনে যেটুকু আউটপুট আসত সেটা আসবেনা।
অর্থ্যাৎ প্যারেন্ট ক্লাসের কোন মেথড চাইল্ড ক্লাসে ওভাররাইড করার পর যখন চাইল্ড ক্লাসটি instantiate করে মেথডটি কল করবেন তখন এই মেথডটিতে (চাইল্ড ক্লাসে) যা লিখবেন তাই পিএইচপি ইন্জিন এক্সিকিউট করবে,প্যারেন্ট ক্লাসে এই মেথড খুজতেই যাবেনা।
** তবে যখন চাইল্ড ক্লাসের ভিতর parent::methodName() এভাবে দিবেন তখন পিএইচপি ইন্জিন প্যারেন্ট ক্লাসে যাবে এবং চাইল্ড ক্লাসের parent::methodName() এই লাইনের জায়গায় প্যারেন্ট ক্লাসের আউটপুট টুকু প্রবেশ করিয়ে দেবে।
**construct মেথডও ওভাররাইড করা যায় (একই নিয়ম)।