Qu'est-ce qui est prioritaire en PHP?

La substitution est un concept de programmation orientée objet qui est similaire à un concept comme la classe, l'objet, l'encapsulation, le polymorphisme, la surcharge, etc. en PHP. Le remplacement des fonctions et des classes est effectué lorsqu'une méthode de la classe dérivée est créée, identique à celle de la méthode de la classe de base ou de la classe parente. Ces deux méthodes ont le même nom et le même nombre d'arguments.

Comment fonctionne le remplacement?

  • La substitution est un concept dans lequel la classe dérivée de la classe de base effectue la même action que celle d'une classe de base. Cette substitution peut concerner des méthodes ou des classes. S'il s'agit d'une méthode remplaçant le nom de la méthode par les paramètres, le spécificateur d'accès se révèle être le même que celui de la méthode de la classe parente. Lorsqu'aucun changement n'a été trouvé dans l'implémentation de la méthode dans la sous-classe dérivée de la classe de base, à ce moment-là, il est dit que la méthode de la sous-classe a remplacé la méthode de la classe de base.
  • Supposons qu'il existe une classe appelée Person qui possède ses propres propriétés et méthodes de données. Il s'agit du parent ou de la classe de base Personne avec une méthode appelée speak (). Il existe maintenant une classe supplémentaire appelée Employé qui étend la classe Personne. Maintenant, cette classe Employee a ses propres propriétés et méthodes de données et possède également une méthode identique à celle de la classe parent, par exemple, speak ().
  • Cette méthode speak () est présente dans la classe de base et également dans la classe dérivée.
  • Maintenant, ce qui se passe, c'est lorsque la classe est instanciée ou lorsque l'objet est créé, laquelle de la méthode speak () sera exécutée, ce qui signifie que parler de la classe de base ou parler de la classe dérivée est exécuté dépend de l'objet de la classe est appelé.
  • En d'autres termes, si un objet de la classe Person est créé, la méthode speak () de la classe Person est appelée et est donc exécutée. Mais si l'objet de la classe Employee est créé, la méthode speak () de la classe dérivée sera exécutée, ce qui remplace la classe speak () de la classe parente.
  • Et voici comment se déroule la priorité avec un exemple
  • Dans l'exemple ci-dessous, il existe deux classes, la classe de base et la classe dérivée. La classe dérivée étend la classe de base. Ces classes sont lancées et deux objets $ obj1 et $ obj2 sont créés. $ obj1 est un objet de BaseClass et $ obj2 est un objet d'une classe dérivée. Ces objets appellent en outre les méthodes déclarées dans leurs classes respectives.
  • Ici, vous observerez que la classe de base et la classe dérivée ont la même méthode appelée ABC (). Lorsque vous exécutez ce programme, vous remarquerez que la méthode ABC () a remplacé la méthode de classe de base ABC ().

Exemple de substitution de méthode

class BaseClass (
public function ABC() (
echo "
In the base class";
)
)
class DerivedClass extends BaseClass (
// override the method ABC() of base class
public function ABC() (
echo "
In the derived class";
)
)
$obj1 = new BaseClass;
$obj1->ABC();
$obj2 = new DerivedClass;
$obj2->ABC();

Production:

Remplacement des modificateurs d'accès

Il existe trois modificateurs d'accès.

  1. public: Accessible de n'importe où dans le programme.
  2. privé: accessible uniquement depuis la classe parent.
  3. protected: accessible depuis la classe de base et la classe dérivée.

Comme nous le savons, la méthode protégée est accessible à partir d'une classe de base et la classe dérivée peut être rendue publique dans la sous-classe mais pas privée car privée n'est accessible que dans la classe parente. De plus, si une méthode de classe a un spécificateur d'accès comme public, la méthode prioritaire de la classe dérivée ne peut pas être déclarée privée et protégée

Exemple de substitution de méthode à l'aide de modificateurs d'accès

class BaseClass (
private function ABC() (
echo "
In the base class Method : ABC";
)
protected function XYZ() (
echo "
In the base class Method : XYZ";
)
)
class DerivedClass extends BaseClass (
// overriding with public for wider accessibility
public function ABC() (
echo "
In the derived class Method : ABC";
)
// overriding method
// with more accessibility
public function XYZ() (
echo "
In the derived class Method : XYZ";
)
)
//$obj1 = new BaseClass;
//$obj1->ABC(); //throws fatal error
//$obj1->XYZ(); //throws fatal error
$obj2 = new DerivedClass;
$obj2->ABC();
$obj2->XYZ();

production:

Remplacement du mot-clé final

Le mot clé final est utilisé pour les classes et les méthodes. Les méthodes et les classes, et non les variables, peuvent être remplacées.

Remplacement de la méthode finale

Lorsqu'une méthode ou une classe est déclarée finale, la substitution de cette méthode ou classe ne peut pas être effectuée, l'héritage avec la classe n'est pas possible.

Exemple de remplacement de méthode à l'aide du mot-clé final

class BaseClass (
// Final method – display
// this cannot be overridden in base class
final function display() (
echo "
In the Base class display function";
)
/// method - ABC
function ABC() (
echo "
In the Base cLass ABC function";
)
)
class DerivedClass extends BaseClass (
function ABC() (
echo "
In the Derived class ABC function";
)
)
$obj1 = new DerivedClass;
$obj1->display();
$obj1->ABC();

Production:

Remplacement de la classe finale

Une classe déclarée comme finale ne peut pas être héritée. Une classe finale a en outre une méthode finale avec d'autres méthodes. Mais puisque la classe elle-même est déclarée finale, il est inutile de déclarer une méthode finale dans une classe finale.

Exemple de remplacement de classe à l'aide du mot-clé final

// class declared as final cannot be overridden
final class BaseClass (
// method - ABC
function ABC() (
echo "
In the BaseClass Method ABC function";
)
// Final method - display
function display() (
echo "
In the BaseClass Method display function";
)
)
// here you cannot extend the base class
// as the base class is declared as final
$obj1 = new BaseClass;
$obj1->display();
$obj1->ABC();

Production:

Articles recommandés

Ceci est un guide de remplacement de PHP. Ici, nous discutons de ce qui est prioritaire et fonctionne de PHP et de différentes méthodes avec un exemple de code. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Questions d'entretiens chez Core PHP
  2. Avantages de PHP
  3. Carrière en PHP
  4. Commandes PHP
  5. Guide de remplacement en JavaScript
  6. Comment le remplacement fonctionne en C ++?
  7. Remplacement dans les POO | Besoin de dérogation à la méthode
  8. Modificateurs d'accès en PHP
  9. Surcharge en Java