Maison  >  Article  >  développement back-end  >  Est-ce que PHP est polymorphe ?

Est-ce que PHP est polymorphe ?

王林
王林original
2019-10-10 17:51:332965parcourir

Est-ce que PHP est polymorphe ?

1. Qu'est-ce que le polymorphisme ?

Le polymorphisme signifie en fait exécuter différentes méthodes selon différents paramètres.

2. Polymorphisme en PHP

La notion de polymorphisme est généralement abordée dans les langages fortement typés, car les langages fortement typés doivent déclarer des paramètres Type, par Par exemple, les paramètres de la méthode ouverte d'un objet lampe de poche indiquent qu'il ne peut s'agir que de lumière bleue et ne peut pas laisser passer d'autres lumières. Mais vous pouvez utiliser le rendu de la classe parent pour le rendre polymorphe. Par exemple, déclarer une classe parent de lumière, laisser d'autres couleurs de lumière hériter de cette classe parent de lumière, déclarer ses paramètres comme classe parent de lumière, puis transmettre n'importe quelle sous-classe de lumière. Quoi qu’il en soit, il s’agit d’un polymorphisme fortement typé.

Mais PHP est un langage dynamique faiblement typé et ne détecte pas les types de paramètres. Vous pouvez tout transmettre, mais dans la version PHP5.3, vous pouvez déclarer des paramètres comme certains objets ; certaine classe, vous devez utiliser le rendu de la classe parent pour la rendre polymorphe ;

3 Comprendre le polymorphisme PHP

php est un langage de script orienté objet, et nous tous. Comme vous le savez, les langages orientés objet ont trois caractéristiques majeures : l'encapsulation, l'héritage et le polymorphisme. PHP devrait avoir ces trois caractéristiques.

L'encapsulation est le processus de construction de classes, que PHP possède également la fonctionnalité d'héritage. Seulement ce polymorphisme est très vague en PHP. La raison est que PHP est un langage faiblement typé.

Le polymorphisme de Java est très clair et peut être grossièrement divisé en deux catégories : les références de classe parent pointent vers des objets de sous-classe ; les références d'interface pointent vers des objets de classe qui implémentent l'interface. Lors de la déclaration d'une variable en Java, vous devez définir le type de la variable, ainsi que les références de classe parent et les références d'interface existantes. Cela ne se reflète pas dans PHP. Lors de la déclaration d'une variable en PHP, vous n'avez pas besoin de définir un type pour la variable. Une variable peut pointer vers différents types de données. Ainsi, PHP n’a pas de polymorphisme comme Java.

PHP n'a pas de polymorphisme clair comme Java, ce qui ne veut pas dire que PHP n'a pas de polymorphisme. Regardez l'exemple suivant :

abstract class animal{
    abstract function fun();
}
class cat extends animal{
    function fun(){
        echo "cat say miaomiao...";
    }
}
class dog extends animal{
    function fun(){
        echo "dog say wangwang...";
    }
}
function work($obj){
    if($obj instanceof animal){
        $obj -> fun();
    }else{
        echo "no function";
    }
}
work(new dog()); 
work(new cat());

La classe ci-dessus est une classe abstraite, qui montre également que les interfaces et les objets de classe qui implémentent des interfaces peuvent également être appliqués.

Tutoriel recommandé : Tutoriel vidéo PHP

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