Maison php教程 PHP源码 PHP面向对象——多态

PHP面向对象——多态

May 25, 2016 pm 05:12 PM
php面向对象

      多态是指在面向对象中能够根据使用类的上下文来重新定义或改变类的性质和行为。    

      PHP不支持重载实现多态,但是PHP可以变向的实现多态效果。如下:

class a{    function test($i){ // $i可以是任何类型的变量
        print_r $i;
    }
}
Copier après la connexion

      上例,可以看出由于PHP是弱类型语言,所以$i可以是任何类型的变量,这样一个函数就可以实现如java等强类型语言中靠改变参数类型重载方法的多态形式。

      这种形式比JAVA的参数类型重载更便捷高效,但也存在问题,如下:

<?php/**
教师类有一个drawPolygon()方法需要一个Polygon类,用来画多边形,此方法内部调用多边形的draw()方法,但由于弱类型,我们可以传入Circle类,就会调用Circle类的draw方法,这就事与愿违了。甚至可以传入阿猫、阿狗类,如果这些类没有draw()方法还会报错。*/class Teacher{    function drawPolygon($polygon){ 
        $polygon->draw(); 
    }    
}class Polygon{    function draw(){        echo "draw a polygon";
    }
}class Circle{    function draw(){        echo "draw a circle";
    }
}?>
Copier après la connexion

      可以看出这样灵活的多态,需要一些控制,在PHP5.3以后可以对参数做类型限制,如下:

// 仿java,在变量参数前加一个限制类名
    function drawPolygon(Polygon $polygon){ 
        $polygon->draw(); 
    }
Copier après la connexion

      这样就限制了只能传入Polygon及其子类。

     还有一只是改变参数数量的重载,同样是因为PHP也不支持方法的重载,所以也需要些变通的方法实现,如下:

<?php// 通过可变参数来达到改变参数数量重载的目的
// 不是必须传入的参数,必须在函数定义时赋初始值function open_database($DB, $cache_size_or_values=null, $cache_size=null)
{    switch (function_num_args())  // 通过function_num_args()函数计算传入参数的个数,根据个数来判断接下来的操作    {        case 1:            $r = select_db($DB);            break;        case 2:            $r = select_db($DB, $cache_size_or_values);            break;        case 3:            $r = select_db($DB, $cache_size_or_values, $cache_size);            break;
    }    return is_resource($r);
}?>
Copier après la connexion

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Une explication approfondie de l'encapsulation orientée objet de PHP Une explication approfondie de l'encapsulation orientée objet de PHP Aug 11, 2023 am 11:00 AM

Interprétation approfondie de l'encapsulation orientée objet PHP L'encapsulation est l'une des trois caractéristiques majeures de la programmation orientée objet. Elle fait référence à l'encapsulation de données et d'opérations sur les données dans une classe, au masquage de détails d'implémentation spécifiques aux programmes externes et à la fourniture d'interfaces externes. En PHP, le concept d'encapsulation est implémenté en utilisant des modificateurs d'accès (public, protégé, privé) pour contrôler l'accessibilité des propriétés et des méthodes. Tout d’abord, examinons le rôle des modificateurs d’accès : public (public) : les propriétés et méthodes publiques peuvent

Comment implémenter le contrôle et la gestion des versions d'objets via un modèle d'usine simple orienté objet PHP Comment implémenter le contrôle et la gestion des versions d'objets via un modèle d'usine simple orienté objet PHP Sep 06, 2023 pm 02:39 PM

Comment implémenter le contrôle et la gestion des versions d'objets via le modèle d'usine simple orienté objet PHP Lors du développement de projets PHP volumineux et complexes, le contrôle et la gestion des versions sont très importants. Grâce à des modèles de conception appropriés, nous pouvons mieux gérer et contrôler la création et l'utilisation des objets, améliorant ainsi la maintenabilité et l'évolutivité du code. Cet article explique comment utiliser le modèle de fabrique simple orienté objet PHP pour implémenter le contrôle et la gestion des versions d'objets. Le modèle d'usine simple est un modèle de conception permettant de créer des classes qui instancient des objets spécifiés via une classe d'usine.

Comment créer des instances d'objet flexibles à l'aide d'un modèle d'usine simple orienté objet PHP Comment créer des instances d'objet flexibles à l'aide d'un modèle d'usine simple orienté objet PHP Sep 06, 2023 pm 02:12 PM

Comment créer des instances d'objet flexibles à l'aide du modèle de fabrique simple orienté objet PHP Le modèle de fabrique simple est un modèle de conception courant qui crée des instances d'objet sans exposer la logique de création d'objet. Ce mode peut améliorer la flexibilité et la maintenabilité du code et est particulièrement adapté aux scénarios dans lesquels différents objets doivent être créés dynamiquement en fonction des conditions d'entrée. En PHP, nous pouvons utiliser les caractéristiques de la programmation orientée objet pour implémenter le modèle de fabrique simple. Regardons un exemple ci-dessous. Supposons que nous devions créer une calculatrice graphique capable de le faire.

Comment maîtriser les compétences en programmation orientée objet dans le développement PHP Comment maîtriser les compétences en programmation orientée objet dans le développement PHP Jun 25, 2023 am 08:05 AM

Avec le développement d’Internet, PHP est progressivement devenu l’un des langages de programmation les plus populaires dans le développement web. Cependant, avec le développement rapide de PHP, la programmation orientée objet est devenue l’une des compétences nécessaires au développement PHP. Dans cet article, nous verrons comment maîtriser les compétences en programmation orientée objet dans le développement PHP. Comprendre les concepts de la programmation orientée objet La programmation orientée objet est un paradigme de programmation qui organise le code et les données grâce à l'utilisation d'objets (classes, propriétés et méthodes). Dans la programmation orientée objet, le code est organisé en modules réutilisables, améliorant ainsi la performance du programme.

Comprendre le mécanisme d'héritage orienté objet de PHP Comprendre le mécanisme d'héritage orienté objet de PHP Aug 10, 2023 am 10:40 AM

Comprendre le mécanisme d'héritage orienté objet de PHP L'héritage est un concept important dans la programmation orientée objet, qui permet la création de nouvelles classes incluant les caractéristiques et fonctionnalités des anciennes classes. En PHP, l'héritage peut être obtenu via le mot-clé extends. Grâce à l'héritage, les sous-classes peuvent hériter des propriétés et des méthodes de la classe parent, ajouter de nouvelles propriétés et méthodes, ou remplacer les méthodes héritées. Comprenons le mécanisme d'héritage orienté objet de PHP à travers un exemple. classeAnimal{public$name

Comment réaliser une commutation et un remplacement transparents d'objets grâce à un modèle d'usine simple orienté objet PHP Comment réaliser une commutation et un remplacement transparents d'objets grâce à un modèle d'usine simple orienté objet PHP Sep 06, 2023 am 08:01 AM

Comment réaliser une commutation et un remplacement transparents d'objets grâce au modèle d'usine simple orienté objet de PHP Introduction : Dans le développement PHP, la programmation orientée objet (programmation orientée objet, appelée POO) est un paradigme de programmation très courant. Le modèle de conception orienté objet peut encore améliorer la maintenabilité et l’évolutivité du code. Cet article se concentrera sur le modèle d'usine simple en PHP pour réaliser une commutation et un remplacement transparents des objets. Quel est le modèle d’usine simple ? Modèle d'usine simple (Simple

Explication détaillée des problèmes courants dans la programmation orientée objet PHP Explication détaillée des problèmes courants dans la programmation orientée objet PHP Jun 09, 2023 am 09:27 AM

Le langage PHP est devenu un langage de développement web très populaire car il est facile à apprendre et à utiliser. La programmation orientée objet est l'un des paradigmes de programmation les plus importants du langage PHP. Cependant, la programmation orientée objet n’est pas quelque chose de facile à maîtriser, c’est pourquoi certains problèmes courants surviennent souvent. Dans cet article, nous fournirons une analyse détaillée des problèmes courants liés à la programmation orientée objet en PHP. Question 1 : Comment créer un objet ? En PHP, vous pouvez utiliser le mot-clé new pour créer un objet. Par exemple : classMyClass{/

Comment PHP implémente la programmation orientée objet et améliore la lisibilité et la maintenabilité du code Comment PHP implémente la programmation orientée objet et améliore la lisibilité et la maintenabilité du code Jun 27, 2023 pm 12:28 PM

Avec le développement continu de la technologie Internet, PHP est devenu l'un de nos langages de développement de sites Web courants, et la programmation orientée objet PHP est également devenue un point de connaissance qui doit être appris. La programmation orientée objet (POO) est un paradigme de programmation dont le concept principal est de combiner des données et un comportement dans un objet pour améliorer la réutilisabilité, la lisibilité et la maintenabilité du code. Cet article explorera comment utiliser PHP pour implémenter une programmation orientée objet et améliorer la lisibilité et la maintenabilité de votre code. Concepts de base de la programmation orientée objet Dans la programmation orientée objet, chaque objet possède un ensemble de propriétés.

See all articles