Surcharge avec différents types de retour
En programmation, la surcharge permet à des fonctions portant le même nom d'exister au sein d'une classe ou d'un espace de noms mais avec des paramètres différents . Cependant, en Java, il n'est pas possible de surcharger les fonctions uniquement en fonction de leurs types de retour.
Pourquoi pas ?
Le compilateur Java s'appuie à la fois sur la signature de la fonction et sur le type de retour pour identifier de manière unique une fonction. Si le compilateur autorisait la surcharge par type de retour uniquement, cela créerait une ambiguïté. Prenons l'exemple suivant :
<code class="java">public int foo() {...} public float foo() {..} ... foo(); // which one to call?</code>
Dans ce cas, le compilateur ne peut pas déterminer quelle méthode foo exécuter en fonction du seul type de retour. Cette ambiguïté entraînerait des erreurs de compilation.
L'avenir de Java
Il n'est actuellement pas prévu de modifier ce comportement dans les futures versions de Java. La spécification du langage Java indique explicitement que "deux méthodes ne peuvent pas avoir la même signature, même si elles ont des types de retour différents."
Considérations C
La surcharge par type de retour est également impossible en C . Semblable à Java, le compilateur C utilise tous les paramètres, y compris le type de retour, pour distinguer les fonctions portant le même nom. Cette approche garantit qu'un appel de fonction spécifique fait toujours référence à l'implémentation prévue.
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!