Maison  >  Article  >  développement back-end  >  Interface PHP avec héritage multiple et tarits implémentant le partage d'exemples d'héritage multiple

Interface PHP avec héritage multiple et tarits implémentant le partage d'exemples d'héritage multiple

小云云
小云云original
2018-01-11 10:47:141660parcourir

Cet article présente principalement la méthode de multi-héritage de l'interface PHP et les tarits pour obtenir un effet multi-héritage. Il analyse le multi-héritage basé sur l'interface PHP et les techniques d'exploitation simples des tarits introduites dans PHP5.4 pour réaliser le multi-héritage. fonctionner sous forme d'exemples. Amis dans le besoin Vous pouvez vous y référer, j'espère que cela pourra aider tout le monde.

Héritage multiple d'interface

Dans l'interface orientée objet de PHP, les interfaces peuvent hériter d'interfaces. Les classes PHP ne peuvent hériter que d'une seule classe parent (héritage unique), mais les interfaces peuvent implémenter plusieurs héritages et hériter d'une ou plusieurs interfaces. Bien sûr, l'héritage d'interface utilise le mot-clé extends tout comme l'héritage de classe. Si vous souhaitez plusieurs héritages, séparez simplement les interfaces héritées par des virgules.

Il convient de noter que lorsque votre interface hérite d'autres interfaces, elle hérite directement des attributs constants statiques et des méthodes abstraites de l'interface parent, la classe doit donc implémenter toutes les méthodes abstraites pertinentes lors de l'implémentation de l'interface.

Ce qui suit est un exemple :

1. Hériter d'une interface unique


<?php
interface testA{
  function echostr();
}
interface testB extends testA{
  function dancing($name);
}
class testC implements testB{
  function echostr(){
    echo "接口继承,要实现所有相关抽象方法!";
    echo "<br>";
  }
  function dancing($name){
    echo $name."正在跳舞!";
  }
}
$demo=new testC();
$demo->echostr();
$demo->dancing("模特");
//运行结果
/**
  接口继承,要实现所有相关抽象方法
  模特正在跳舞!
**/

2. Hériter de plusieurs interfaces


<?php
interface testA{
  function echostr();
}
interface testB{
  function dancing($name);
}
interface testC extends testA,testB{
  function singing($nickname);
}
class testD implements testC{
  function echostr(){
    echo "接口继承,要实现父接口所有相关方法!";
    echo "<br />";
  }
  function dancing($name){
    echo $name."正在跳舞!";
    echo "<br />";
  }
  function singing($nickname){
    echo $nickname."正在唱歌!";
  }
}
$demo=new testD();
$demo->echostr();
$demo->dancing("模特");
$demo->singing("周杰伦");
//运行结果
/**
  接口继承,要实现父接口所有相关方法!
  模特正在跳舞!
  周杰伦正在唱歌!
**/

tarits héritage multiple

héritage multiple Une classe peut hériter de plusieurs classes parents en même temps et combiner les fonctions de plusieurs classes parents. Ce modèle est utilisé en C++ pour améliorer la flexibilité de l'intégration. Cependant, l'héritage multiple est trop flexible et entraînera un « héritage diamant ». , donc utiliser Il y a beaucoup de difficultés, le modèle est devenu plus compliqué et maintenant la plupart des langages ont abandonné le modèle d'héritage multiple.
Mais parfois, je veux utiliser l'héritage multiple, mais PHP n'a pas d'héritage multiple, alors j'ai inventé une telle chose.

Les traits peuvent être compris comme un ensemble de méthodes qui peuvent être appelées par différentes classes, mais les traits ne sont pas des classes ! Ne peut pas être instancié. Jetons un coup d'œil à la syntaxe avec un exemple :


<?php
trait myTrait{
  function traitMethod1(){}
  function traitMethod2(){}
}
//然后是调用这个traits,语法为:
class myClass{
  use myTrait;
}
//这样就可以通过use myTraits,调用Traits中的方法了,比如:
$obj = new myClass();
$obj-> traitMethod1 ();
$obj-> traitMethod2 (); 
>

Pour une introduction et une utilisation spécifiques, veuillez consulter l'introduction officielle.

Recommandations associées :

Comment implémenter l'héritage d'interface et les principes d'héritage multiple d'interface en PHP

6 types d'analyse d'interface prédéfinis en PHP

php utilise des interfaces et des combinaisons pour simuler plusieurs héritages_PHP tutoriel

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