Maison  >  Article  >  développement back-end  >  Remplacement en PHP

Remplacement en PHP

WBOY
WBOYoriginal
2024-08-29 12:59:101028parcourir

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

PUBLICITÉ Cours populaire dans cette catégorie DEVELOPPEUR PHP - Spécialisation | Série de 8 cours | 3 tests simulés

Commencez votre cours de développement de logiciels libres

Développement Web, langages de programmation, tests de logiciels et autres

Comment fonctionne le remplacement ?

Explorons comment fonctionne la substitution en PHP.

  • 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 qui remplace le nom de la méthode et les paramètres, le spécificateur d'accès s'avère être le même que celui de la méthode de la classe parent. Lorsqu'aucun changement n'est trouvé dans l'implémentation de la méthode dans la sous-classe dérivée de la classe de base, on dit à ce moment-là 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 de la classe parent ou de base Person avec une méthode appelée speak(). Il existe désormais une classe supplémentaire appelée Employee qui étend la classe Person. Désormais, 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, speaks() 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 des méthodes 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éé alors 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éé alors la méthode speak() de la classe dérivée sera exécutée, ce qui remplace la classe speak() de la classe parent.
  • Et voici comment se déroule le remplacement 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 initié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 la classe de base ABC().

Exemple de remplacement de méthode

L'exemple de substitution de méthode est écrit ci-dessous.

Code :

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

Sortie :

Remplacement en PHP

Remplacement avec des modificateurs d'accès

Il existe trois modificateurs d'accès.

  1. public : Accessible depuis n'importe où dans le programme.
  2. privé : Accessible depuis la classe parent uniquement.
  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 depuis une classe de base et la classe dérivée, elle peut être rendue publique dans la sous-classe mais pas privée car private n'est accessible que dans la classe parent. De plus, si une méthode de classe a un spécificateur d'accès public, la méthode de substitution dans la classe dérivée ne peut pas être déclarée comme privée et protégée

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

Un exemple de remplacement à l'aide de modificateurs d'accès est écrit ci-dessous.

Code :

class BaseClass {
private function ABC() {
echo "<br/>In the base class Method : ABC";
}
protected function XYZ() {
echo "<br/>In the base class Method : XYZ";
}
}
class DerivedClass extends BaseClass {
// overriding with public for wider accessibility
public function ABC() {
echo "<br/> In the derived class Method : ABC";
}
// overriding method
// with more accessibility
public function XYZ() {
echo "<br/>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();

Sortie :

Remplacement en PHP

Remplacement par le 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 comme finale, la substitution de cette méthode ou de cette classe ne peut pas être effectuée et l'héritage avec la classe n'est pas possible.

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

L'exemple de remplacement à l'aide du mot-clé final est écrit ci-dessous.

Code :

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

Sortie :

Remplacement en PHP

Final Class Overriding

A class declared as final cannot be inherited. A Final Class further have final method along with other methods. But since the class itself is declared final there is no use of declaring a final method in a final class.

Example of Class Overriding using Final Keyword

The example of class overriding using final keyword is written below.

Code:

// class declared as final cannot be overridden
final class BaseClass {
// method - ABC
function ABC() {
echo "<br> In the BaseClass Method ABC function";
}
// Final method - display
function display() {
echo "<br> 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();

Output:

Remplacement en PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:PHPXORArticle suivant:PHPXOR