अंतिम कीवर्ड 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 एक त्रुटि संदेश फेंकता है "क्लास चाइल्ड फ़ाइनल क्लास (बेसक्लास) से विरासत में नहीं मिल सकता है"। इसका तात्पर्य है कि यह बेसक्लास के किसी भी चाइल्ड क्लास को बनाने की अनुमति नहीं देगा।