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) |