Maison > développement back-end > Problème PHP > PHP prend-il en charge l'héritage multiple ?

PHP prend-il en charge l'héritage multiple ?

(*-*)浩
Libérer: 2023-02-23 22:40:01
original
5575 Les gens l'ont consulté

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!":
    }
}
Copier après la connexion

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();
Copier après la connexion

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!

Étiquettes associées:
php
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