Maison > développement back-end > tutoriel php > Qu'est-ce que le polymorphisme ? Tutoriel d'exemple de polymorphisme orienté objet PHP

Qu'est-ce que le polymorphisme ? Tutoriel d'exemple de polymorphisme orienté objet PHP

伊谢尔伦
Libérer: 2023-03-11 22:04:02
original
2426 Les gens l'ont consulté

Qu'est-ce que le polymorphisme ?

Le polymorphisme est la troisième caractéristique des langages orientés objet après l'abstraction de base de données et l'héritage. Le polymorphisme fait référence à plusieurs formes et a la capacité d'exprimer plusieurs formes. Dans les représentations orientées objet, elles sont gérées différemment selon le type d'objet. Le polymorphisme permet à chaque objet de répondre à sa manière à un message commun. Le polymorphisme améliore la flexibilité et la réutilisabilité des logiciels.

Si nous créons une méthode doing(), s'il s'agit d'un étudiant, elle s'imprimera pour le cours, et s'il s'agit d'un employé de l'entreprise, elle s'imprimera pour le travail.

Pratique courante

Utiliser en cas de jugement

/**
 * PHP多态性
 */
 
// 定义学生类
class student{
    public function cla(){
            echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类
class office{                              
        public function Wor(){
            echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
        if($obj instanceof student){ 
            $obj->cla();
        }elseif($obj instanceof office){
            $obj->wor();
        }else{
            echo "没有这个对象!";
        }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班
Copier après la connexion

Le résultat ci-dessus :

Les étudiants sont en classe
Le personnel est en classe Allez travailler

Cette méthode ordinaire a un inconvénient, c'est-à-dire que s'il y a beaucoup d'objets, le if..else.. sera très long et peu flexible.

Pratiques de polymorphisme

Définissez une méthode abstraite publique, et toutes les sous-classes en héritent.

/**
 * PHP多态性
 */
 
// 定义一个公共类
class pub{
    protected function working(){
        echo "本方法需要在子类中重载!";
    }
}
 
// 定义学生类,继承公共类pub
class student 
extends
 pub{
    public function working(){
        echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类,继承公共类pub
class office extends pub{
        public function working(){
        echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
        if($obj instanceof pub){ 
            $obj->working();
        }else{
            echo "没有这个对象!";
        }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班
Copier après la connexion

C'est la caractéristique du polymorphisme, une réutilisation flexible.

Autres pratiques

Du point de vue de la mise en œuvre du polymorphisme, ce n'est rien de plus que de standardiser que chaque classe doit remplacer la classe parent A méthode pour obtenir un effet unifié. Lorsque nous définissons une classe, il est également possible d'ajouter nous-mêmes une méthode unifiée. Par conséquent, l'exemple ci-dessus peut également être implémenté comme ceci :

/**
 * PHP多态性
 */
 
// 定义学生类
class student{
    // 定义统一的方法pub
    public function pub(){
        echo "学生工正在上课!<br />";
    }
}
 
// 定义职员类
class office{
    // 定义统一的方法pub
        public function pub(){
        echo "职员正在上班!<br />";
        }
}
 
// 判断对象类型方法
function doing($obj){ 
    if($obj){
        // 调用类的统一方法
            $obj->pub();
    }else{
        echo &#39;没有这个对象&#39;;  
    }
}
 
doing(new student()); // 学生正在上课
doing(new office());  // 职员正在上班
Copier après la connexion

Le polymorphisme peut également être compris comme une méthode de programmation, et le but ultime de la programmation n'est rien de plus que : flexibilité, polymorphisme, réutilisation , et l'efficacité.

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:
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