6
votes

Quelle est la différence entre héritage multiple et polymorphisme?

Quelle est la différence entre le héritage multiple et le polymorphisme?

Dans un livre I rouge une ligne disant

Il n'y a pas de support pour plusieurs héritages au niveau de la classe. Cela signifie que vous ne pouvez pas étendre plus d'une classe à la fois.

qui contradict le concept de polymorphisme décrit dans le même livre que

polymorphisme est le processus de création de plusieurs objets à partir de classes de base spécifiques

Maintenant, si plusieurs héritage ne sont pas autorisés dans PHP, alors comment le polymorphisme est autorisé?


7 commentaires

PHP n'autorise pas le polymorphisme ...?


... parce que c'est une langue faiblement type


Alors pourquoi les livres de texte expliquent-ils le concept de polymorphisme dans le livre de OOP en PHP


@Seanja Bien que ce ne soit pas un polymorphisme strictement, la technique peut toujours être appliquée. Mais cela s'appelle DuckTypegong dans des langues faiblement de type.


Les gars veuillez être spécifiques et élaborants ....


Si vous vouliez poser une question spécifique à PHP, veuillez le faire dans le sujet des messages. Sinon, veuillez supprimer la balise PHP.


@Parth Pourquoi un livre de OOP sur PHP explique-t-il de multiples héritage?


3 Réponses :


1
votes

Ces deux ont très peu à faire les uns avec les autres.

Un héritage multiple est une chose statique après la compilation de temps / d'exécution. Le polymorphisme est une technique dans laquelle seul le temps d'exécution est réellement décidé quelle méthode sur un sous-type est appelée.

php ne permet pas de héritage multiple.


0 commentaires

3
votes

Un héritage multiple signifie qu'un objet hérite de deux classes parents différentes. Un programmeurBicycliste est à la fois un programmeur et un cycliste. Le problème se pose lorsque la classe de programmeur définit ses données de membre favori_activity comme piratage pendant qu'un bicycliste a également préféré_activity , mais c'est . Si vous demandez à un programmeBicycliste ce que son favori_activité est, quelle est la bonne réponse?

Le polymorphisme traite du comportement des objets. Cela vous permet de dire à un objet de faire quelque chose et de faire dépendre l'action qui en résulte dépend de la classe de l'objet, même si vous ne savez pas exactement ce que c'est. Donc, vous rencontrez une personne, bien que vous ne sachiez pas si c'est un programmeur ou un cuisinier, et vous lui disez de perform_your_job () . Si c'est un programmeur, elle écrira du code, si c'est un cuisinier, elle fera un repas, mais vous n'avez pas besoin de lui dire spécifiquement à Write_Code () ou MAKE_A_MEAL () .


1 commentaires

Pouvez-vous être un peu élaboratif pour le polymorphisme? .. son intéressant .. plssss le fait ...



20
votes

Comme Ikke dit, Héritage multiple strong> n'a rien à voir avec le polymorphisme.

Si je pouvais dessiner un diagramme de classe, il ressemble à une héritage multiple ressemble à ceci: P>

// Assuming we have a pack of animals
// This is Java
for (Animal pet : pack)
    pet.speak();


2 commentaires

Ahaaa grande explication c'était une idée fausse dans mon esprit merci beaucoup Xavier ......


Le problème de polymorphisme dans PHP est que, puisque les types de retour ne sont pas appliqués (il s'agissait d'une langue faiblement dactylographiée), il n'y a aucune garantie que parle renvoie réellement une chaîne. Cela pourrait renvoyer un objet de base de données. (Voir Stackoverflow.com/questions/749712/... )