86 votes

Polymorphisme - Définir en deux phrases seulement

J'ai examiné d'autres définitions et explications, mais aucune ne me satisfait. Je veux voir si quelqu'un peut définir le polymorphisme en deux phrases maximum, sans utiliser de code ou d'exemples. Je ne veux pas entendre "Vous avez donc un ouvreur de personne/voiture/canette..." ou comment le mot est dérivé (personne n'est impressionné que vous sachiez ce que poly et morph signifient). Si vous avez une très bonne compréhension de ce qu'est le polymorphisme et une bonne maîtrise de l'anglais, vous devriez être en mesure de répondre à cette question par une définition courte, bien que dense. Si votre définition définit précisément le polymorphisme, mais qu'elle est si dense qu'elle nécessite quelques relectures, alors c'est exactement ce que je recherche.

Pourquoi seulement deux phrases ? Parce qu'une définition est courte et intelligente. Une explication est longue et contient des exemples et du code. Regardez ici pour des explications (les réponses sur ces pages ne sont pas satisfaisantes pour ma question) :

Polymorphisme vs surcharge vs surcharge
Essayez de décrire le polymorphisme aussi simplement que possible.

Pourquoi est-ce que je pose cette question ? Parce qu'on m'a posé la même question et que j'ai été incapable de trouver une définition satisfaisante (selon mes critères, qui sont assez élevés). Je veux voir si l'un des grands esprits de ce site peut y parvenir.

Si vous ne pouvez vraiment pas respecter l'exigence des deux phrases (c'est un sujet difficile à définir), il n'y a pas de problème si vous dépassez cette limite. L'idée est d'avoir une définition qui définit réellement ce qu'est le polymorphisme et qui n'explique pas ce qu'il fait ou comment l'utiliser (vous voyez la différence ?).

0 votes

Un nom, une mise en œuvre multiple.

2 votes

On m'a posé cette question lors d'un entretien d'embauche. J'avais l'impression que la poser lors d'un entretien d'embauche était un acte de snobisme élitiste, le genre de chose qu'un employé de Google poserait avec suffisance en supposant que personne ne pourrait y répondre efficacement. Si vous n'avez pas obtenu le poste parce que vous ne pouviez pas y répondre, il est probablement préférable que vous travailliez pour des personnes qui s'intéressent davantage à ce que vous pouvez faire qu'à qui vous pouvez être plus malin.

0 votes

Le polymorphisme est un concept très important à comprendre dans le développement. Je recommande vivement de comprendre au moins sa valeur, sinon sa définition formelle. Je suggère d'être capable d'expliquer au moins le fonctionnement et la valeur du modèle Stratégie.

1voto

Jeff Sternal Points 30147

Le polymorphisme est une fonctionnalité de programmation qui permet à un objet d'avoir plusieurs types ("formes") et vous permet de le traiter comme l'un de ces types en fonction de ce que vous devez faire sans connaître ou vous soucier de ses autres types.

1voto

Tony D Points 43962

Le polymorphisme est une fonctionnalité du langage permettant au code algorithmique de haut niveau de fonctionner de manière inchangée sur plusieurs types de données. Et l'autre phrase, à quoi elle servait... ;-P.

( Les types de supports C++ sont énumérés et contrastés dans ma réponse : Polymorphisme en c++ )

0voto

paul paul Points 43

Des entités de même type (c'est-à-dire implémentant la même interface ou dérivant de la même classe), se comportent de manière différente (sous le même nom de méthode).

0voto

jazziiilove Points 1

Le concept de polymorphisme est devenu un phénomène récent. Voici la dérive actuelle. Le Runtime définit quelle sous-méthode doit être invoquée par une référence d'une super classe. Maintenant, qu'est-ce que cela signifie en pratique ? En fait, cela ne veut rien dire. Vous pouvez coder simplement sans polymorphisme. Alors, pourquoi ? Parce que, si nous n'avions pas le polymorphisme, nous devrions mémoriser toutes les définitions des fonctions des sous-classes. Le polymorphisme nous sauve de cela en pratique.

Vous pouvez définir une liste comme suit :

List list = new List();

mais si vous vérifiez IList vous pouvez bénéficier de l'interface comme :

IList list = new List();

et utiliser le IList référence librement. En supposant que IList est également implémentée dans une autre classe, vous pouvez utiliser les méthodes de cette classe inconnue en utilisant à nouveau la procédure suivante IList sans essayer de se souvenir du nom de cette classe. Merveilleux, n'est-ce pas ?

Maintenant, d'autres informations précieuses arrivent :
Java est polymorphe par défaut, alors que .NET et C++ ne le sont pas. Dans MS, vous devez déclarer la fonction de base. virtual (et dans .NET override mot-clé).

De plus, il existe 2 règles intégrales dans le polymorphisme. L'une est l'héritage (via l'implémentation d'interfaces ou l'extension de classes) et l'autre est la substitution. Sans overriding, le polymorphisme n'existe pas. Notez que la surcharge de méthodes (qui se fait toujours dans une seule classe) est également un type de polymorphisme "minimaliste".

0voto

anand Points 1

Je pense que l'implémentation de méthodes de la même signature dans différentes classes (ayant une sorte de relation d'héritage en utilisant extends ou implements) est une méthode de surcharge et aussi du polymorphisme parce que de cette façon nous obtenons plusieurs formes de la même signature de méthode.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X