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()

व्याख्या:

उपरोक्त उदाहरण में क्लास BaseClass जो पैरेंट क्लास है। जिसमें calculate मेथड को फाइनल के रूप में चिह्नित किया गया है। इसका तात्पर्य है कि हम इसकी किसी भी चाइल्ड क्लास में show मेथड को ओवरराइड नहीं कर सकते। एरर की पहचान करने के लिए ChildClass फाइनल मेथड show () को परिभाषित करने का प्रयास कर रहा है। यह एक फेटल एरर उत्पन्न करेगा, इसका तात्पर्य है कि पैरेंट क्लास का फाइनल मेथड इसकी चाइल्ड क्लास में परिभाषित नहीं किया जा सकता।

उदाहरण:

क्लास से पहले "Final" कीवर्ड का उपयोग

<?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)

व्याख्या:

उपरोक्त उदाहरण में क्लास BaseClass को फाइनल के साथ परिभाषित किया गया है, जिसके परिणामस्वरूप हम इस क्लास को एक्सटेंड नहीं कर सकते। जब क्लास Child BaseClass से एक्सटेंड करने का प्रयास करती है (जिसका तात्पर्य है कि Child BaseClass की चाइल्ड क्लास है)। इस स्थिति में, PHP एक एरर मैसेज थ्रो करता है "Class Child may not inherit from the final class (BaseClass)"। इसका तात्पर्य है कि यह BaseClass की कोई चाइल्ड क्लास बनाने की अनुमति नहीं देगा।

  1. - C# में फाइनल कीवर्ड

    Java में final कीवर्ड होता है, लेकिन C# में इसका कार्यान्वयन नहीं है। समान कार्यान्वयन के लिए, sealed कीवर्ड का उपयोग करें।sealed के साथ, आप किसी मेथड के ओवरराइडिंग को रोक सकते हैं। जब आप C# में किसी मेथड पर sealed मॉडिफायर का उपयोग करते हैं, तो वह मेथड अपनी ओवरराइडिंग क्षमताओं को खो देता है। Sealed

  1. - जावा में Static और Final में अंतर

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

  1. - Python क्लास मेथड चेनिंग समझाया गया

    मेथड चेनिंग मेथड चेनिंग एक तकनीक है जिसका उपयोग एक ही ऑब्जेक्ट पर कई मेथड कॉल करने के लिए किया जाता है, जिसमें ऑब्जेक्ट रेफरेंस का उपयोग केवल एक बार किया जाता है। उदाहरण: मान लें हमारे पास एक क्लास Foo है जिसमें दो मेथड्स हैं, bar और baz। हम क्लास Foo का एक इंस्टेंस बनाते हैं: foo = Foo() मेथड चेनिं