কম্পিউটার

পিএইচপি-তে চূড়ান্ত শ্রেণী ও চূড়ান্ত পদ্ধতি ব্যাখ্যা কর।


অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ধারণার সাথে সম্পর্কিত PHP5 দ্বারা চূড়ান্ত কীওয়ার্ড প্রবর্তিত হয়।

কিন্তু আমরা ফাইনালে যাওয়ার আগে, আমাদের নিশ্চিত করতে হবে যে আমাদের উত্তরাধিকার ধারণা সম্পর্কে ভালো ধারণা আছে। উত্তরাধিকারসূত্রে, আমরা অন্য শ্রেণীর থেকে একটি শ্রেণির উত্তরাধিকারী হতে পারি। এছাড়াও, আমরা একটি উত্তরাধিকারী শ্রেণীতে একটি ফাংশনকে ওভাররাইড করতে পারি, মূলত প্রদত্ত আচরণটি প্রতিস্থাপন করতে। কিছু ক্ষেত্রে, আমাদের একটি ক্লাসকে উত্তরাধিকার সূত্রে প্রাপ্ত হওয়া থেকে রক্ষা করতে হতে পারে বা আমাদের একটি ফাংশনকে ওভাররাইড করা প্রতিরোধ করতে হতে পারে। চূড়ান্ত কীওয়ার্ডের সাথে ক্লাস এবং ফাংশনকে প্রিফিক্স করে এটি চূড়ান্তের সাথে অর্জন করা যেতে পারে। যেটি মূলত PHP-এর ক্ষেত্রে একটি ত্রুটি তৈরি করে যে কেউ একটি চূড়ান্ত ক্লাস বাড়ানোর বা চূড়ান্ত ফাংশনকে ওভাররাইড করার চেষ্টা করে।

দ্রষ্টব্য:

আমরা শুধুমাত্র পদ্ধতি এবং ক্লাসের সাথে চূড়ান্ত কীওয়ার্ড ব্যবহার করতে পারি।

আসুন নীচের উদাহরণগুলির সাহায্যে ধারণাটি প্রদর্শন করি।

উদাহরণ:

আমরা প্যারেন্ট ক্লাস ফাংশন ওভাররাইড করতে পারি না৷

<?php
   class BaseClass{
      final function calculate($val1,$val2){
         $sum = $val1+$val2;
         echo "Sum of given no=".$sum;
         }
      }
   class ChildClass extends BaseClass{
      function calculate($x,$y){
         $mult=$val1*$val2;
         echo "Multiplication of given no=".$mult;
         }
      }
   $obj= new ChildClass();
   $obj->show(10,10);
?>

আউটপুট:

PHP Fatal error: Cannot override final method BaseClass::calculate()

ব্যাখ্যা:

উপরের উদাহরণে ক্লাস বেসক্লাস যা প্যারেন্ট ক্লাস। যেখানে গণনা পদ্ধতি চূড়ান্ত হিসাবে চিহ্নিত করা হয়েছে। এটি বোঝায় যে আমরা এর যেকোনো শিশু ক্লাসে শো পদ্ধতিকে ওভাররাইড করতে পারি না। ত্রুটি সনাক্ত করতে চাইল্ডক্লাস চূড়ান্ত পদ্ধতি শো () সংজ্ঞায়িত করার চেষ্টা করছে। এটি একটি মারাত্মক ত্রুটি তৈরি করবে, এটি বোঝায় যে পিতামাতার ক্লাসের চূড়ান্ত পদ্ধতিটি তার শিশু শ্রেণিতে সংজ্ঞায়িত করা যাবে না৷

উদাহরণ:

ক্লাসের আগে "ফাইনাল" কীওয়ার্ড ব্যবহার করুন

<?php
   final Class BaseClass{
      function printData($val1,$val2){
         $add=$val1+$val2;
         echo "Sum of given no=".$s;
         }
      }
   class Child extends BaseClass{
      function printData($val1,$val2){
         $m=$val1*$val2;
         echo "Multiplication of given no=".$m;
         }
      }
   $obj= new Child();
   $obj->printData(20,20);
?>

আউটপুট:

PHP Fatal error: Class Child may not inherit from final class (BaseClass)

ব্যাখ্যা:

উপরের উদাহরণে ক্লাস বেসক্লাস ফাইনালের সাথে সংজ্ঞায়িত করুন, যে ফলাফল আমরা এই ক্লাসটি প্রসারিত করতে পারি না। যখন ক্লাস চাইল্ড বেসক্লাস থেকে প্রসারিত করার চেষ্টা করে (যা বোঝায় চাইল্ড হল বেসক্লাসের চাইল্ড ক্লাস)। এই পরিস্থিতির জন্য, PHP একটি ত্রুটি বার্তা ছুড়ে দেয় "ক্লাস চাইল্ড চূড়ান্ত ক্লাস (বেসক্লাস) থেকে উত্তরাধিকারী হতে পারে না"৷ এটি বোঝায় যে এটি বেসক্লাসের কোনও চাইল্ড ক্লাস তৈরি করার অনুমতি দেবে না৷


  1. চূড়ান্ত, অবশেষে এবং C# এ চূড়ান্ত

  2. C# এ চূড়ান্ত কীওয়ার্ড

  3. জাভাতে স্ট্যাটিক এবং ফাইনালের মধ্যে পার্থক্য

  4. পাইথন ক্লাস পদ্ধতি চেইনিং ব্যাখ্যা কর