Maison > développement back-end > Problème PHP > Parlons des différences entre les méthodes d'interface des classes PHP

Parlons des différences entre les méthodes d'interface des classes PHP

PHPz
Libérer: 2023-04-24 17:00:09
original
704 Les gens l'ont consulté

PHP est un langage de programmation populaire. Dans la programmation orientée objet, l'interface est un concept courant. Une interface en PHP signifie qu'une classe définit un ensemble de méthodes, mais ne fournit pas d'implémentation. Au lieu de cela, ces méthodes sont implémentées par la classe qui implémente l'interface. Les interfaces jouent le rôle de classes d'implémentation standardisées et contraignantes, et ont une grande flexibilité et évolutivité. Dans l’interface PHP, elle est divisée en deux types : l’interface de classe abstraite et l’interface régulière. Dans cet article, nous nous concentrerons sur les différences entre les méthodes d'interface des classes PHP.

1.Interface de classe abstraite

  1. Définition de classe abstraite

Les classes abstraites ne peuvent pas être instanciées et ne peuvent être héritées que. Sa fonction principale est de fournir une structure de base pour les autres classes. Le code commun est placé dans la classe abstraite. les détails sont implémentés dans des sous-classes. Les méthodes des classes abstraites sont facultatives et certaines peuvent être définies comme des méthodes abstraites (c'est-à-dire des méthodes avec uniquement des noms de méthode mais aucun corps de méthode). Une classe abstraite doit contenir au moins une méthode abstraite, sinon toutes les méthodes sous sa déclaration seront considérées comme des méthodes abstraites. méthode courante.

Exemple :

abstract class Animal{
   abstract function eat();
   function sleep(){
      echo "晚安,好梦!";
   }
}
Copier après la connexion
  1. Héritage et implémentation des classes abstraites

Étant donné que les classes abstraites ne peuvent pas être instanciées, elles ne peuvent être implémentées que via des sous-classes. La sous-classe doit implémenter toutes les méthodes abstraites définies dans la classe abstraite, sinon la sous-classe le fera également. Doit être défini comme une classe abstraite.

Exemple :

class Cat extends Animal{
   function eat(){
      echo "吃小鱼干!";
   }
}
Copier après la connexion

Dans le code ci-dessus, nous définissons une classe Cat pour hériter de la classe Animal, et en même temps dans la classe Cat classe code> La méthode <code>eat() est implémentée afin que nous puissions accéder aux méthodes d'implémentation spécifiques dans cette classe abstraite via la classe Cat. Cat类去继承Animal类,同时在Cat类中实现了eat()方法,这样我们就可以通过Cat类来访问这个抽象类中的具体实现方法。

  1. 抽象类的优点
  • 抽象类可以提供提供一定的代码复用;
  • 抽象类可以隔离出系统的底层实现细节,从而降低了模块之间的耦合度;
  • 抽象类可以提供一致性接口,使得子类在实现具体的功能时,规范化了实现过程。

二、常规接口

常规的接口是PHP中的另一种形式的接口。常规接口可以有方法和常量,在接口中定义的所有方法都必须由任何类去实现,否则就会产生致命的错误。通过实现某个接口的类来使该类可以访问接口中的定义的方法和常量。

  1. 常规接口定义

在PHP中,我们可以定义一个常规接口,并在其中指定需要实现的方法:

interface IAnimal{
   public function eat();
   public function run();
}
Copier après la connexion

在这个代码片段中,我们定义了一个IAnimal接口,并在其中指定了需要实现的两个方法——eat()run()

  1. 常规接口的实现

在实现常规接口时,实现一个接口时必须实现其中定义的所有方法,否则就会产生编译错误。

示例:

class Dog implements IAnimal{
   function eat(){
      echo "吃骨头!";
   }
   function run(){
      echo "追皮球!";
   }
}
Copier après la connexion

在上面的代码片段中,我们定义了一个Dog类,实现了IAnimal接口,并在其中实现了接口中定义的两个方法——eat()run()

    Avantages des classes abstraites
    Les classes abstraites peuvent fournir un certain degré de réutilisation du code ;
  • Les classes abstraites peuvent isoler les détails d'implémentation sous-jacents du système, réduisant ainsi le couplage entre les modules ; une interface cohérente permet aux sous-classes de standardiser le processus d'implémentation lors de l'implémentation de fonctions spécifiques.
  • 2. Interface conventionnelle
L'interface conventionnelle est une autre forme d'interface en PHP. Les interfaces régulières peuvent avoir des méthodes et des constantes.Toutes les méthodes définies dans l'interface doivent être implémentées par n'importe quelle classe, sinon une erreur fatale se produira. En implémentant une classe d'une interface, la classe peut accéder aux méthodes et constantes définies dans l'interface.

    Définition générale de l'interface
En PHP, nous pouvons définir une interface régulière et spécifier les méthodes qui doivent être implémentées :

rrreee

Dans cet extrait de code, nous définissons une interface IAnimal, et spécifie deux méthodes qui doivent être implémentées - eat() et run().

    Implémentation d'interfaces régulières
Lors de l'implémentation d'une interface régulière, lors de l'implémentation d'une interface, vous devez implémenter toutes les méthodes qui y sont définies, sinon une erreur de compilation se produira.

Exemple :

rrreee

Dans l'extrait de code ci-dessus, nous définissons une classe Dog, implémentons l'interface IAnimal et implémentons les deux définies dans l'interface Méthodes - manger() et run().

    Avantages des interfaces régulières

Les interfaces conventionnelles peuvent améliorer la réutilisabilité du code ;

Les interfaces conventionnelles peuvent réduire le couplage entre les codes et augmenter la maintenabilité du code

Les interfaces conventionnelles peuvent être utilisées par plusieurs classes. Implémenter et fournir un système unifié ; interface pour augmenter l’évolutivité du code.

3. La différence entre l'interface de classe abstraite et l'interface conventionnelle 🎜🎜🎜Définition et utilisation 🎜🎜🎜La façon de définir l'interface de classe abstraite et l'interface conventionnelle est différente. L'interface de classe abstraite est définie et implémentée via une classe abstraite, tout en étant régulière. les interfaces sont directement définies et implémentées. 🎜🎜Les interfaces de classe abstraite sont implémentées par héritage, tandis que les interfaces régulières sont implémentées en implémentant toutes les méthodes définies dans l'interface. 🎜🎜🎜La différence entre les classes abstraites et les classes régulières🎜🎜🎜Les classes abstraites peuvent avoir des méthodes ordinaires et des méthodes abstraites, tandis que les interfaces régulières ne peuvent définir que des méthodes abstraites ;🎜🎜Les classes abstraites doivent être implémentées par héritage, tandis que les interfaces régulières peuvent être implémentées par Implémentation de plusieurs classes ; 🎜🎜Les méthodes abstraites des classes abstraites doivent être implémentées par des sous-classes, et toute classe qui implémente une interface régulière doit implémenter toutes les méthodes de l'interface sous la même forme. 🎜🎜🎜Différences dans la sémantique de conception🎜🎜🎜Les interfaces de classes abstraites sont principalement utilisées pour fournir certains comportements courants ou méthodes d'organisation de la structure de données dans la conception de langages. Il peut y avoir une relation d'héritage ou une relation de combinaison entre une classe abstraite et ses sous-classes 🎜🎜Les interfaces conventionnelles sont principalement utilisées pour contraindre les protocoles de communication entre les objets dans la conception du langage ; Les interfaces régulières définissent certaines spécifications et méthodes publiques, qui sont implémentées par plusieurs classes. 🎜🎜Conclusion🎜🎜Qu'il s'agisse d'une interface de classe abstraite ou d'une interface régulière, ce sont des concepts très importants en PHP. L'interface de classe abstraite peut fournir une structure d'héritage flexible et prendre en charge l'implémentation par défaut des méthodes. Il est recommandé que les méthodes de la classe abstraite soient des méthodes communes entre les classes, tandis que l'interface conventionnelle standardise les noms de méthode de la classe ; que les méthodes de l'interface soient spécifiques entre les classes. Par conséquent, lors de la réalisation d’applications pratiques spécifiques, nous devons choisir différents types d’interfaces en fonction de scénarios d’utilisation spécifiques. 🎜

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal