need to prevent some methods or classes from being inherited might arise in my object hierarchy. For example, I might want a way to prevent people from overriding the
In its long-running tradition of solving my problems, PHP also provides a solution for this. By prefixing a method with the
You may be scratching your head and wondering how a class can be abstract but have
Inheriting classes can still access and call these methods; they just cannot include them in the set of things they extend, modify, or re-implement.
Classes can also be declared as
get_ProductID
method in my Product
class. In its long-running tradition of solving my problems, PHP also provides a solution for this. By prefixing a method with the
final
keyword, you can prevent inheriting classes from overriding it and implementing their own version. I can modify my Product
class as follows:<?php abstract class Product { // etc. // // nobody can override this method. // final public method get_ProductID() { return $this->id; } // etc. } ?>
You may be scratching your head and wondering how a class can be abstract but have
final
methods that nobody can override. The answer is that an abstract class can still contain some implementation, but somebody has to extend it and implement the unimplemented portion defined by the abstract
methods. The implemented portion of the class can include methods that cannot be overridden, as indicated by the final
keyword.Inheriting classes can still access and call these methods; they just cannot include them in the set of things they extend, modify, or re-implement.
Classes can also be declared as
final
, which means that nobody is allowed to inherit from them. You might see this if you have a User
object and an inheriting AdministratorUser
object with special privilegesyou might choose to declare the AdministratorUser
object as final
to prevent others from inheriting it and any of its special privileges.
No comments:
Post a Comment