final Keyword in PHP – कई बार हमें ऐसी जरूरत पडती है कि हम नहीं चाहते कि हमारी किसी Class को Inherit किया जा सके अथवा किसी Class में Define किए गए किसी Method को Inherit किया जा सके।
इस स्थिति में हम हमारी किसी Class अथवा किसी Class के किसी Method को final Keyword के साथ Specify कर देते हैं। हम हमारी जिस Class या Method को final Keyword के साथ Specify कर देते हैं, उस Class को या उस Method को आगे Inherit नहीं किया जा सकता।
Final Class वास्तव में Abstract Class का बिल्कुल Opposite है। यानी हम जिस Class को Abstract Define कर देते हैं, उस Class को Inherit करना Compulsory हो जाता है, जबकि हम जिस Class को final Declare कर देते हैं, उस Class को Inherit ही नहीं किया जा सकता। यानी वह Class अपनी Inheritance श्रृंखला की अन्तिम Class बन जाती है।
हम हमारी जरूरत के अनुसार किसी भी Class को अथवा Class के किसी भी Function को Final Declare कर सकते हैं। Final Declare किए गए Method को Inherit करने का मतलब ये है कि हम Final Declare किए गए Method को Override नहीं कर सकते।
यदि हम किसी Final Declare किए गए Class को Inherit करने की कोशिश करते हैं अथवा किसी final Declare किए गए Method को Override करने की कोशिश करते हैं, तो PHP Fatal Error देता है। यानी PHP हमें किसी Final Class को Derive करने अथवा किसी final Method को Override करने से रोक देता है।
उदाहरण के लिए यदि हम हमारी Time Class के Program में ही इनका प्रयोग करना चाहें व NewTime Class को अपनी Final Class तथा NewTime Class में Define किए गए Method को Final Method Declare करना चाहें, तो हम इस काम को करने के लिए अपने Program को निम्नानुसार Modify कर सकते हैं:
<?php //Super Class or Base Class class Time { protected $hour, $minutes; public function __construct($hour, $minutes){ $this->hour = $hour; $this->minutes = $minutes; } public function display(){ echo "\nTime : ". $this->hour . ":" . $this->minutes; } } //Subclass or Derived Class final class NewTime extends Time{ private $seconds; public function __construct($hour, $minutes, $seconds){ parent::__construct($hour, $minutes); $this->seconds = $seconds; } final public function display(){ parent::display(); echo ":". $this->seconds; } } $hmt = new NewTime(10, 12, 30); $hmt->display(); ?>
अब यदि हम NewTime Class को फिर से Derive करना चाहें या इस NewTime Class में Define किए गए display() Method को Override करना चाहें, तो PHP हमें ऐसा करने से रोक देता है।
ध्यान रखने वाली बात ये है कि हम किसी Class की किसी Property को Final Declare नहीं कर सकते। हम केवल Class को अथवा Class के किसी Method को ही final Declare कर सकते हैं।
जब हम किसी Class को Final Declare कर देते हैं, तब हमें उस Class के किसी Method को Final Declare करने की जरूरत नहीं रह जाती, क्योंकि जब Class को ही Derive नहीं किया जा सकता, तो उसके किसी Method को Override करने का सवाल ही पैदा नहीं होता।
यानी ये बात भी Abstract Class के बिल्कुल विपरीत है। यदि हम किसी Class को Abstract बनाना चाहते हैं, तो हमें उस Class में कम से कम एक Method को Abstract Declare करना जरूरी होता है, तभी हम Class को भी abstract Keyword के साथ Specify कर सकते हैं। यदि हम केवल Class के साथ अथवा केवल किसी एक Method के साथ abstract Keyword का प्रयोग करें, तो PHP Fatal Error Trigger करता है।
लेकिन हम किसी Class को Final Declare किए बिना ही उस Class के किसी एक या एक से अधिक Methods को Final Declare कर सकते हैं। जबकि यदि हम Class को ही Final Declare कर देते हैं, तो उस Class के सभी Members Automatically Final Declare हो जाते हैं, क्योंकि उस Class के किसी भी member को Inherit करने का सवाल ही समाप्त हो जाता है, इसलिए उन्हें अलग से Final Declare करने की जरूरत भी समाप्त हो जाती है।
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook PHP in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
PHP in Hindi | Page: 647 | Format: PDF