Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> PHP

PHP में फाइनल क्लास और फाइनल मेथड को समझाइए।

अंतिम कीवर्ड 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# का कार्यान्वयन नहीं है। उसी कार्यान्वयन के लिए, सीलबंद कीवर्ड का उपयोग करें। मुहरबंद के साथ, आप किसी विधि को ओवरराइड करने से रोक सकते हैं। जब आप किसी विधि पर सी # में सीलबंद संशोधक का उपयोग करते हैं, तो विधि ओवरराइड करने की अपनी क्षमता खो देती है। सीलबंद विधि एक व्

  1. जावा में स्टेटिक और फाइनल के बीच अंतर

    इस पोस्ट में, हम जावा में स्थिर और अंतिम कीवर्ड के बीच के अंतर को समझेंगे। स्थिर इसे नेस्टेड स्थिर वर्ग, चर, विधियों और ब्लॉक पर लागू किया जा सकता है। घोषित होने पर स्थैतिक चर को प्रारंभ करने की आवश्यकता नहीं होती है। इस वैरिएबल को फिर से इनिशियलाइज़ किया जा सकता है। यह केवल कक्षा के स्थ

  1. पायथन क्लास मेथड चेनिंग की व्याख्या करें

    विधि श्रृखंला विधि श्रृखंला एक ऐसी तकनीक है जिसका उपयोग केवल एक बार ऑब्जेक्ट संदर्भ का उपयोग करके एक ही ऑब्जेक्ट पर एकाधिक विधि कॉल करने के लिए किया जाता है। उदाहरण - मान लें कि हमारे पास फू वर्ग है जिसमें दो विधियां हैं, बार और बाज़। हम कक्षा फू का एक उदाहरण बनाते हैं - foo = Foo() मेथड चेनिंग क