Maison >développement back-end >Problème PHP >PHP prend-il en charge l'héritage multiple ?
Question : PHP prend-il en charge l'héritage multiple ?
Réponse : Non, seul l'héritage unique est pris en charge.
Comment mettre en œuvre l'héritage multiple ?
Réponse : Il peut être implémenté à l'aide d'une interface ou d'un trait. (Apprentissage recommandé : Programmation PHP de l'entrée à la maîtrise)
interface Nous n'expliquerons pas grand chose ici. Son principe est qu'une classe peut implémenter plusieurs interfaces. Le code suivant peut illustrer cela.
interface test1{ public function connect(); } interface test2{ public function contact(); } // 类可以同时实现多个接口 class myCode implements test1,test2{ public function connect(){ echo "test1!"; } public function contact(){ echo "test2!": } }
Concentrons-nous sur l'implémentation du trait de l'héritage multiple (en fait, cela ne s'appelle pas l'héritage multiple, cela devrait être appelé une fonction similaire à l'héritage multiple)
Alors, qu'est-ce qu'un trait ?
Réponse : Cela ressemble à la fois à une classe et à une interface, mais ce n'est en réalité ni l'une ni l'autre. Trait peut être considéré comme une implémentation partielle de la classe et peut être mélangé dans une ou plusieurs classes PHP existantes. . Il a deux fonctions : indiquer ce qu'une classe peut faire ; fournir une implémentation modulaire. Trait est une technologie de réutilisation de code qui fournit un mécanisme flexible de réutilisation de code pour la restriction d'héritage unique de PHP.
Alors, comment mettre en œuvre le trait ? Regardez le code suivant :
//基本类 class basicTest{ public function test(){ echo "hello,world\n"; } } //traitOne trait traitOne{ public function test(){ echo "this is trait one"; } public function testOne(){ echo "one<br />"; } } //traitTwo trait traitTwo{ // public function test(){ // echo "this is trait two!"; // } public function testTwo(){ echo "Two<br />"; } } //继承基本类,并use trait class myCode extends basicTest{ use traitOne,traitTwo; public function test(){ echo "hehaha!!<br />"; } } $obj = new myCode(); $obj->testTwo();
Remarque :
Priorité : méthode propre>méthode trait>méthode héritée
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!