If tutorials available on this website are helpful for you, please whitelist this website in your ad blocker😭 or Donate to help us ❤️ pay for the web hosting to keep the website running.
final keyword के साथ define किये गए method को Child Class में override नहीं किया जा सकता है , और इसी तरह final keyword के साथ define की गयी Class को extend नहीं किया जा सकता है।
Class / method को final define करने के लिए final
keyword का use किया जाता है।
<?php class BaseClass { final public function tests() { echo "BaseClass::tests() called\n";
}
}
class ChildClass extends BaseClass {
public function tests() {
echo "ChildClass::tests() called\n";
}
}
?>
Output :
Fatal error: Cannot override final method BaseClass::tests()
final method को override करने पर कुछ इस तरह से error generate होती है। अब एक Final Class का example देखते हैं।
<?php final class BaseClass { }
class ChildClass extends BaseClass {
}
?>
Output :
Fatal error: Class ChildClass may not inherit from final class (BaseClass)
आप सिर्फ Class / Methods को ही final define कर सकते हैं , किसी class member (static / non static variable) को नहीं , ऐसा करने पर fatal error generate होती है।
Fatal error: Cannot declare property ClassName::$var final, the final modifier is allowed only for methods and classes.
अब क्योंकि private methods को किसी और class के द्वारा Override नहीं किया जा सकता है , इसलिए private methods को भी final define नहीं कर सकते हैं। ऐसा करने Warning generate होगी।
Warning: Private methods cannot be final as they are never overridden by other classes
आप किसी class में constructor और destructor को final define कर सकते हैं।
See Example :
class MyClass { function __construct() { echo 'Constructor <br>'; } function __destruct() { echo 'Destructor'; } } new MyClass();
Output
Constructor Destructor
Important
Inheritance में अगर आप Parent Class में constructor और destructor को final define सकते हैं , तो इसकी Child Class में constructor और destructor define नहीं कर सकते हैं।
See Example -
class ParentClass{ final function __construct(){ echo 'Constructor'; } } class ChildClass extends ParentClass{ function __construct(){ echo 'Constructor'; } }//Fatal error: Cannot override final method ParentClass::__construct()