Sobes.tech
Junior

Que peut-on modifier lors de la surcharge de méthodes en programmation?

sobes.tech IA

Réponse de l'IA

Lors de la surcharge de méthodes (method overloading), il est possible de modifier :

  • Le nombre de paramètres : Les méthodes avec le même nom peuvent avoir un nombre différent de paramètres formels.
  • Les types de paramètres : Les méthodes avec le même nom et le même nombre de paramètres peuvent différer par leurs types.
  • L'ordre des types de paramètres : Si les méthodes ont le même nombre de paramètres et les mêmes types, mais dans un ordre différent, cela est également considéré comme une surcharge.

Exemple en Java :

// Classe avec des méthodes surchargées
class Calculator {

    // Méthode d'addition de deux nombres entiers
    public int add(int a, int b) {
        return a + b;
    }

    // Méthode surchargée : addition de trois nombres entiers
    public int add(int a, int b, int c) {
        return a + b + c;
    }

    // Méthode surchargée : addition de deux nombres à virgule flottante
    public double add(double a, double b) {
        return a + b;
    }

    // Méthode surchargée : addition d'un entier et d'un nombre à virgule flottante
    public double add(int a, double b) {
        return a + b;
    }

    // Méthode surchargée : addition d'un nombre à virgule flottante et d'un entier
    public double add(double a, int b) {
        return a + b;
    }
}

Ce qu'il ne faut pas changer lors de la surcharge de méthodes :

  • Le type de retour : Deux méthodes avec le même nom et la même signature (nombre, types et ordre des paramètres) ne peuvent différer uniquement par le type de retour.
  • Les modificateurs d'accès : Les modificateurs d'accès (public, private, protected, default) n'affectent pas la surcharge.
  • La présence ou l'absence du mot-clé static : Il n'est pas possible de surcharger une méthode statique en définissant une méthode non statique avec la même signature, ou vice versa.
  • La liste des exceptions levées par la méthode : La liste des exceptions ne fait pas partie de la signature de la méthode, et le compilateur ne l'utilise pas pour différencier les méthodes surchargées.

Comparaison entre surcharge et redéfinition de méthodes :

Caractéristique Surcharge (Overloading) Redéfinition (Overriding)
Où cela se produit Dans une même classe ou dans une hiérarchie de classes Dans une classe dérivée
Nom de la méthode Identique Identique
Signature de la méthode Différente (nombre, types, ordre des paramètres) Identique
Type de retour Peut être différent (mais pas la seule différence) Doit être identique ou covariant (pour les objets)
Objectif Fournir plusieurs options pour une même action avec différents types de données ou quantités d'arguments Modifier le comportement d'une méthode héritée dans la classe dérivée
Relation entre méthodes Méthodes indépendantes Relation de "est un" (héritage)
Polymorphisme Polymorphisme à la compilation (statique) Polymorphisme à l'exécution (dynamique)