human
Qu'est-ce que le polymorphisme, en programmation, et pourquoi est-il utile/comment est-il utilisé ? La question est dans le titre , merci pour vos réponses ! Explique comme si j'avais cinq ans.
gpt
Rien de tout cela n'est correct du tout. Merci de me permettre de corriger la situation. Imaginons que vous ayez deux classes indépendantes. Appelons l'un d'eux Chat et l'autre Ver. Comme vous le savez, quand il pleut, les chats et les vers font des choses différentes. Un chat rentrera en courant dans la maison et réprimandera son propriétaire qu'il pleut. Un ver fera surface et s'amusera sous la pluie. Le point ici est qu'un chat et un ver comprennent le fait qu'il pleut et y réagissent de différentes manières. Cependant, le fait est qu'il pleut, donc ils auront tous les deux une réaction bien qu'ils soient différents en eux-mêmes. Ainsi , essentiellement , les classes Worm et Cat comprennent toutes deux le message itsRaining ( ) . La classe Worm aura des instructions pour qu'il fasse surface et barbote, la classe Cat retournera dans la maison et gémira à son malheureux hoomin. C'est l'essence du polymorphisme. Pourquoi est-ce utile ? Eh bien , à bien des égards ! Par exemple, dans le monde réel, de nombreux langages auront une méthode appelée .toString() . C'est un parfait exemple de polymorphisme. L'idée est qu'il convertit un objet en une sortie String pour une utilisation dans une zone de texte ou un fichier journal par exemple. Je vais utiliser Java comme référence simplement parce que je pense que c'est un excellent langage pour débutant à bien des égards. Ainsi, en Java, la classe Object est la superclasse de chaque classe. Autrement dit, chaque fois que vous écrivez une classe dans un programme Java, il inclut automatiquement un appel à sa superclasse. En supposant que vous n'héritez pas déjà de quelque chose, cette superclasse est essentiellement le constructeur d'objet. C'est ce qu'on appelle le chaînage des constructeurs. Donc, si vous avez une situation où votre classe hérite d'une classe dont la superclasse directe est Object, alors avant que votre classe ne fasse quoi que ce soit, elle appellera le constructeur de sa superclasse puis, à son tour, le constructeur de Object. Pourquoi est-ce important de comprendre ? Eh bien, la méthode .toString ( ) réelle est contenue dans Object , donc théoriquement, chaque classe de Java comprend .toString ( ) . Il se peut qu'elle fournisse une sortie différente selon l'endroit où se trouve votre classe dans la hiérarchie, mais le fait est que vous pouvez invoquer cette méthode n'importe où. Vous pouvez même le remplacer et ajouter votre propre comportement spécial si vous en avez besoin. Ainsi, si votre classe redéfinit la méthode toString(), cela reste un exemple de polymorphisme. Même si votre classe remplace maintenant toString et lui fait faire autre chose, le fait est que la méthode toString est comprise et produit une réaction. Il se peut que vous ayez une classe qui fournisse une sorte d'information significative. Par exemple , si vous avez appelé myCat.toString ( ) , vous devrez peut - être simplement afficher une chaîne " Can haz polymorphic chzbrger ? " et rien de plus . Pendant ce temps , votre toString remplacé dans Worm , c'est - à - dire lorsque vous appelez myWorm.toString ( ) peut simplement fournir une chaîne qui indique sa longueur en mm , comme « Je mesure 16 mm ! » ou « Je mesure 10 mm ! « Donc, pour résumer, le polymorphisme est la capacité pour deux classes distinctes de comprendre le même message mais peut avoir des résultats complètement différents.