Final classes
Inheritance allows for enormous flexibility within a class hierarchy. You can create subclasses to extend the functionality of a base class, but PHP OOP gives the posibility to create classes that cannot be extended. Such a class is called
final class.
A
final class is declared by adding the
final keyword before the
class word.
- For example:
<?php
// base class (declared final)
final class Base {
// ... PHP code
}
// define a child class derivated from Base
class BaseChild extends Base {
// ... PHP instructions
}
?>
Running this code will generate the following error:
Fatal error: Class BaseChild may not inherit from final class (Base) in ...
Final methods
A normal method (public or protected) can be overridden in the child class. If you want a method to remain fixed and unchanging, prefix the definition with the
final keyword.
A final method cannot be overridden.
- For example:
<?php
// base class
class Base {
// final method
final public function testMethod() {
echo 'This is a final method';
}
}
// define a child class derivated from Base
class BaseChild extends Base {
// override the testMethod()
public function testMethod() {
echo 'Another text';
}
}
?>
This example will generate the following error:
Fatal error: Cannot override final method Base::testMethod() in ...
By declaring a class or method final, you limit the flexibility given by inheritance, so, use final with care.
Daily Test with Code Example
HTML
CSS
JavaScript
PHP-MySQL
Which tag adds an image in web page?
<div> <img> <span><img src="http://coursesweb.net/imgs/webcourses.gif" width="191" height="63" alt="Courses-Web" />
Which of these CSS codes displays the text oblique?
font-style: italic; text-decoration: underline; font-weight: 500;#id {
font-style: italic;
}
Click on the jQuery function used to hide with animation a HTML element.
click() hide() show()$(document).ready(function() {
$(".a_class").click(function(){ $(this).hide("slow"); });
});
Click on the correctly defined function in PHP.
fname function() {} function fname() {} function $fname() {};function fname($a, $b) {
echo $a * $b;
}