Open In App

Final keyword in PHP

Improve
Improve
Like Article
Like
Save
Share
Report

Final keyword in PHP is used in different context. The final keyword is used only for methods and classes.
final keyword
Final methods: When a method is declared as final then overriding on that method can not be performed. Methods are declared as final due to some design reasons. Method should not be overridden due to security or any other reasons.

Example:




<?php
  
// Program to understand use of 
// final keyword for methods
class Base {
      
    // Final method
    final function printdata() {
        echo " Base class final printdata function";
    }
      
    // Non final method
    function nonfinal() {
        echo "\n This is nonfinal function of base class";
    }
}
  
// Class that extend base class
class Derived extends Base {
      
    // Inheriting method nonfinal 
    function nonfinal() {
        echo "\n Derived class non final function";
    }
      
    // Here printdata function can
    // not be overridden
}
  
$obj = new Derived;
$obj->printdata();
$obj->nonfinal();
?>


Output:

Base class final printdata function
 Derived class non final function

Final Classes: A class declared as final can not be extended in future. Classes are declared as final due to some design level issue. Creator of class declare that class as final if he want that class should not be inherited due to some security or other reasons. A final class can contain final as well as non final methods. But there is no use of final methods in class when class is itself declared as final because inheritance is not possible.

Example:




<?php
  
// Program to understand final classes
// in php
final class Base {
      
    // Final method
    final function printdata() {
        echo "final base class final method";
    }
          
    // Non final method
    function nonfinal() {
        echo "\nnon final method of final base class";
    }
}
  
$obj = new Base;
$obj->printdata();
$obj->nonfinal();
  
/* If we uncomment these lines then it will
show Class Derived may not inherit from final
class (Base)
class Derived extends Base {
      
} */
?>


Output:

final base class final method
non final method of final base class

Note: Unlike Java final keyword in PHP can only be used for methods and classes not for variables.



Last Updated : 11 Dec, 2018
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads