Interface
Les classes PHP sont uniques héritées, c'est-à-dire que l'héritage multiple n'est pas pris en charge. Lorsqu'une classe nécessite les fonctions de plusieurs classes, l'héritage est impuissant. , pour cette raison PHP a introduit la technologie d'interface
Si toutes les méthodes d'une classe abstraite sont des méthodes abstraites, et qu'il n'y a pas de déclaration de variables, et toutes les membres de l'interface ont tous des autorisations publiques, donc cette classe abstraite spéciale est appelée une interface
L'interface est définie à l'aide du mot-clé interface, et les implémentations sont utilisées pour implémenter les méthodes d'interface et doivent être entièrement implémentées
Implémenter une interface
Ce qui suit est un exemple pratique d'implémentation d'interface PHP Ici, une interface nommée IPillage est créée et implémentée. L'interface IPillage est la suivante :
interface IPillage { function emptyBakAccount(); function burnDocument(); }
Ensuite, implémentez cette interface via la classe Executive :
class Executive extends Employee implements IPillage { private $totalStockOptions; function emptyBankAccount() { echo "Call CFO and ask to transfer funds to Swiss bank account."; } function burnDocuments() { echo "Torch the office suite."; } }
Il peut y avoir une classe Assistant qui implémente cette interface :
class Assistant extends Employee implements IPillage { function takeMome() { echo "Taking memo..."; } function emptyBankAccount() { echo "Go on shopping spree with office credit card."; } function burnDocuments() { echo "Start small fire in the trash can."; } }
Comme vous pouvez le voir , l'interface est particulièrement utile. Parce que, bien qu'elles définissent le nombre de méthodes nécessaires pour produire un certain comportement, ainsi que les noms de chaque méthode, les interfaces permettent à différentes classes d'implémenter ces méthodes de différentes manières. Dans cet exemple, pour la méthode de gravure de fichiers, la classe Assistdnt brûle simplement les fichiers dans la corbeille, tandis que la classe Executive le fait d'une manière plus extrême (brûlant son bureau).
Mettre en œuvre plusieurs interfaces
Il serait injuste de permettre à des sous-traitants extérieurs d'empiéter sur l'entreprise, après tout, l'entreprise a été construite grâce aux efforts de tous à temps plein employés. Autrement dit, comment fournir des emplois aux employés et empiéter sur les fonctions de l’entreprise, tout en limitant les sous-traitants à accomplir uniquement les tâches requises ? La solution consiste à diviser ces tâches en plusieurs tâches, puis à implémenter les multiples interfaces nécessaires. PHPS prend en charge cette fonctionnalité. Prenons l'exemple suivant :
<?php interface IEmployee{...} interface IDeveloper{...} interface IPillage{...} class Employee implements IEmployee,IDeveloper,iPillage { ... } class Contractor implements IEmployee,IDeveloper { ... } ?>
La différence entre les classes abstraites et les interfaces
Une interface est une classe abstraite spéciale qui peut également être considérée comme une spécification du modèle. La différence générale entre les interfaces et les classes abstraites est la suivante :
Si une sous-classe implémente une interface, elle doit implémenter toutes les méthodes de l'interface (qu'elles soient nécessaires ou non) ; pour implémenter les méthodes requises.
Si le nom de la méthode défini dans une interface change, alors toutes les sous-classes qui implémentent cette interface doivent mettre à jour le nom de la méthode de manière synchrone et si le nom de la méthode change dans une classe abstraite, le nom de la méthode correspondante ; sa sous-classe ne sera pas affectée, mais c'est juste une nouvelle méthode
Les classes abstraites ne peuvent être héritées que d'une seule manière. Lorsqu'une sous-classe doit implémenter des fonctions qui doivent hériter de plusieurs classes parents, elle doit utiliser une interface
Exemple de code
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!