Menu
Coddy logo textTech

Bases de la surcharge de méthodes

Fait partie de la section Programmation Orientée Objet du Journey Java de Coddy. Leçon 28 sur 87.

Le polymorphisme signifie « plusieurs formes ». En Java, il permet aux objets de se comporter différemment selon le contexte. Une forme de polymorphisme est la surcharge de méthodes, également appelée polymorphisme à la compilation, car Java détermine quelle méthode appeler lors de la compilation.

La surcharge de méthodes vous permet de définir plusieurs méthodes portant le même nom mais ayant des paramètres différents. Le compilateur les distingue en fonction du nombre, du type ou de l'ordre des paramètres :

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    public int add(int a, int b, int c) {
        return a + b + c;
    }
    
    public double add(double a, double b) {
        return a + b;
    }
}

Lorsque vous appelez add(5, 3), Java utilise la première méthode. Appeler add(5, 3, 2) déclenche la deuxième, et add(5.0, 3.0) invoque la troisième. Le compilateur choisit la bonne version en fonction des arguments que vous fournissez.

Notez que modifier uniquement le type de retour n'est pas une surcharge valide. La liste des paramètres doit différer :

// Surcharge NON valide - ne compilera pas
public int getValue() { return 1; }
public double getValue() { return 1.0; }  // Erreur !

Vous avez déjà rencontré la surcharge auparavant avec la surcharge de constructeur. La surcharge de méthode suit les mêmes règles et offre de la flexibilité en permettant à un seul nom de méthode de gérer différents scénarios d'entrée.

challenge icon

Défi

Facile

Construisons un formateur de messages qui illustre la surcharge de méthodes en proposant plusieurs façons de formater les messages. Tu vas créer une classe utilitaire avec plusieurs méthodes format surchargées, qui gèrent différents scénarios d’entrée.

Tu organiseras ton code sur deux fichiers :

  • MessageFormatter.java : crée une classe qui fournit un formatage flexible des messages grâce à des méthodes surchargées. Ton formateur doit comporter :
    • Une méthode format(String message) qui renvoie le message entouré de crochets : [message]
    • Une méthode format(String message, int repeatCount) qui renvoie le message répété le nombre de fois indiqué, avec des espaces comme séparateurs
    • Une méthode format(String message, String prefix) qui renvoie le message avec le préfixe ajouté : prefix: message
    • Une méthode format(String message, String prefix, String suffix) qui renvoie : prefix: message (suffix)
    Le compilateur choisira la méthode appropriée en fonction des arguments que tu lui transmettras : c’est le polymorphisme à la compilation en action !
  • Main.java : montre les quatre méthodes surchargées fonctionnant ensemble. Tu recevras quatre entrées : un message (String), un nombre de répétitions (int), un préfixe (String) et un suffixe (String). Crée un MessageFormatter et appelle chaque version de la méthode format, en affichant chaque résultat sur sa propre ligne :
    • Premièrement, formate uniquement le message
    • Deuxièmement, formate le message avec le nombre de répétitions
    • Troisièmement, formate le message avec le préfixe
    • Quatrièmement, formate le message avec le préfixe et le suffixe

Tu recevras quatre entrées : le texte du message, le nombre de fois où le répéter, une chaîne de préfixe et une chaîne de suffixe.

Par exemple, si le message est "Hello", que le nombre de répétitions est 3, que le préfixe est "INFO" et que le suffixe est "done", ta sortie doit afficher quatre versions formatées différentes du même message, chacune utilisant une méthode surchargée différente !

REQUIRED OUTPUT FORMAT: [Your translated content here]

Essayez vous-même

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Lire les entrées
        String message = scanner.nextLine();
        int repeatCount = Integer.parseInt(scanner.nextLine());
        String prefix = scanner.nextLine();
        String suffix = scanner.nextLine();
        
        // TODO: Créer un objet MessageFormatter
        
        // TODO: Appeler format avec seulement le message et afficher le résultat
        
        // TODO: Appeler format avec message et repeatCount et afficher le résultat
        
        // TODO: Appeler format avec message et prefix et afficher le résultat
        
        // TODO: Appeler format avec message, prefix, et suffix et afficher le résultat
        
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Programmation Orientée Objet

Entraînez-vous par vous-même : Compilateur Java en ligne