Qu'est-ce qu'une méthode surchargée?
La surcharge de méthodes est une caractéristique de la plupart des langages de programmation orientés objet dans laquelle deux méthodes ou plus partagent le même nom mais ont des paramètres différents. Plus précisément, le nombre, le type de données et / ou l'ordre des paramètres sont différents. Lorsque le code est compilé, la méthode appropriée sera automatiquement sélectionnée en fonction de la manière dont elle est appelée. Les méthodes étant également appelées fonctions dans certains langages de programmation, la surcharge de méthodes est parfois appelée surcharge de fonctions.
Un exemple simple de surcharge de méthode serait une méthode qui calcule l'aire d'un carré. Il pourrait être défini comme getArea (Square s). Cette méthode peut être surchargée pour calculer en plus l'aire du cercle en ajoutant la méthode getArea (cercle c).
La principale exigence en matière de surcharge de méthodes est que les méthodes partagent le même nom. Leurs signatures de méthode - le nom de la méthode, le nombre de paramètres et les types de données de paramètre - doivent sinon être uniques. De cette manière, le compilateur peut déterminer la méthode à exécuter.
Les constructeurs, les méthodes utilisées pour instancier des objets, sont souvent surchargés. Ceci est fait pour initialiser un objet avec des valeurs autres que celles par défaut. Par exemple, un objet employé avec deux champs (nom et date de naissance ou dob) peut avoir les constructeurs surchargés suivants: Employee (), Employee (nom) et Employee (nom, dob). Le premier constructeur crée un objet employé avec des champs nom et dob vides. Le second définit le champ de nom, mais laisse le champ dob vide, et le troisième définit les champs name et dob.
La surcharge de méthodes est le plus souvent utilisée pour que plusieurs méthodes apparaissent logiquement comme une seule méthode. Dans l'exemple getArea (), s'il existe physiquement deux méthodes, l'appelant est présenté avec une seule méthode logique getArea (). De cette manière, getArea () peut être étendu pour travailler sur d'autres formes - triangles, trapèzes, etc. - tout en se présentant logiquement comme une seule méthode.
Les méthodes sont également surchargées pour préserver la compatibilité avec les versions antérieures. Une méthode qui effectue un calcul complexe pourrait se voir attribuer une nouvelle obligation d’effectuer éventuellement le même calcul avec une légère modification. Un nouveau paramètre est ajouté à la méthode qui déterminera comment effectuer le calcul - à l'ancienne ou à la nouvelle.
Pour éviter de devoir rechercher tous les cas dans lesquels la méthode est appelée et ajouter le nouveau paramètre, vous pouvez surcharger la méthode. La nouvelle méthode aura l'ancienne signature et sera appelée par le code existant. Il ne contiendra pas de logique elle-même, appellera simplement la méthode modifiée et passera par défaut à l'ancienne méthode pour le nouveau paramètre. Nouveau code appellera la méthode modifiée et passera le nouveau paramètre avec la valeur appropriée, ancien ou nouveau.
La surcharge de méthode est un type de polymorphisme, dans lequel la même méthode logique peut être utilisée, en pratique, de plusieurs manières. La surcharge de méthode n'est pas la même chose que le remplacement de méthode. La méthode est prioritaire lorsque la définition d'une méthode dans une classe parent est modifiée par une classe enfant. Dans ce cas, les deux méthodes auront la même signature.