Maison  >  Article  >  développement back-end  >  Quelle est l'idée du principe de substitution de Liskov en php

Quelle est l'idée du principe de substitution de Liskov en php

WBOY
WBOYoriginal
2022-02-25 11:15:132027parcourir

En PHP, le principe de substitution de Liskov est une contrainte sur l'héritage de classe. L'idée principale de ce principe est que les classes inappropriées avec des méthodes ou des attributs redondants ne peuvent pas être héritées de manière fortuite. ne peut pas changer la fonction d'origine de la classe parent.

Quelle est l'idée du principe de substitution de Liskov en php

L'environnement d'exploitation de cet article : système Windows 10, PHP version 7.1, ordinateur Dell G3.

Quelle est l'idée du principe de substitution Liskov en php ?

Le principe de substitution Liskov nous dit que si un objet de classe de base est remplacé par son objet de sous-classe dans le logiciel, le programme ne produira aucune erreur ou exception, et vice versa Non, si une entité logicielle utilise un objet de sous-classe, elle ne pourra pas nécessairement utiliser un objet de classe de base.

Le principe de substitution de Liskov est l'un des moyens importants d'implémenter le principe d'ouverture et de fermeture. Étant donné que les objets de sous-classe peuvent être utilisés partout où des objets de classe de base sont utilisés, essayez d'utiliser des types de classe de base pour définir des objets dans le programme, puis au moment de l'exécution. déterminez son type de sous-classe et remplacez l'objet de classe parent par l'objet de sous-classe.

Lorsque vous utilisez le principe de substitution Liskov, veuillez noter que toutes les méthodes de la sous-classe doivent être déclarées dans la classe parent, ou que la sous-classe doit implémenter toutes les méthodes déclarées dans la classe parent. Essayez de concevoir la classe parent comme une classe ou une interface abstraite, laissez la sous-classe hériter de la classe parent ou implémenter l'interface parent, et implémentez les méthodes déclarées dans la classe parent au moment de l'exécution, l'instance de sous-classe remplace l'instance de classe parent, et nous. peut facilement étendre la fonction système et il n'est pas nécessaire de modifier le code de la sous-classe d'origine. L'ajout de nouvelles fonctions peut être réalisé en ajoutant une nouvelle sous-classe.

Comprendre à travers un morceau de code

<?php
//例子1
class Bird{
  protect function fly(){
  }
}
//翠鸟
class KingFisher extends Bird{
}
//鸵鸟
class Ostrich extends Bird{
  //鸵鸟不会飞啊
}
//例子2
class A{
  protect function add($a, $b){
    return $a + $b;
  }
} 
//重载
class B extends A{
  protected function add($a, $b){
    return $a + $b + 100;
  }
}
?>

Le principe de substitution de Liskov est une contrainte sur l'héritage de classe. Il existe deux interprétations du principe de substitution de Liskov :

1 Vous ne pouvez pas simplement hériter de classes inappropriées avec des méthodes ou des attributs redondants. (Exemple 1)

2. Les sous-classes peuvent étendre les fonctions de la classe parent, mais ne peuvent pas modifier les fonctions d'origine de la classe parent. (Exemple 2)

Le principe de substitution de Liskov contient les significations cachées suivantes :

① Une sous-classe peut implémenter la méthode abstraite de la classe parent, mais elle ne peut pas remplacer la méthode non abstraite de la classe parent.

② Les sous-classes peuvent ajouter leurs propres méthodes uniques.

③ Lorsqu'une méthode d'une sous-classe remplace une méthode d'une classe parent, les conditions préalables de la méthode (c'est-à-dire les paramètres formels de la méthode) sont plus souples que les paramètres d'entrée de la méthode de la classe parent.

④ Lorsqu'une méthode d'une sous-classe implémente une méthode abstraite d'une classe parent, les postconditions de la méthode (c'est-à-dire la valeur de retour de la méthode) sont plus strictes que celles de la classe parent.

Apprentissage recommandé : "Tutoriel vidéo 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:Que signifient => et -> en phpArticle suivant:Que signifient => et -> en php