En Java, la surcharge de méthodes est une fonctionnalité qui permet à une classe de posséder plusieurs méthodes portant le même nom, à condition que leurs listes de paramètres soient différentes. Elle est liée au polymorphisme à la compilation (ou statique). Ce concept est essentiel pour créer des méthodes qui effectuent des tâches similaires, mais avec des entrées différentes.
La surcharge de méthodes améliore la lisibilité du programme. On peut donner le même nom à différentes méthodes, mais avec des paramètres différents. Selon le nombre de paramètres ou leur type, c'est la méthode correspondante qui est appelée.
La clé de la surcharge de méthodes réside dans la signature d'une méthode. Deux méthodes sont considérées comme différentes si leurs signatures diffèrent. Il y a deux façons de surcharger une méthode :
Un nombre différent de paramètres : les méthodes peuvent porter le même nom, mais avoir un nombre de paramètres différent.
public class Display {
public void show(int x) {
System.out.println("Show with int: " + x);
}
public void show(int x, int y) {
System.out.println("Show with two ints: " + x + ", " + y);
}
}
Des types de paramètres différents : les méthodes peuvent porter le même nom et avoir le même nombre de paramètres, mais avec des types différents.
public class Display {
public void show(int x) {
System.out.println("Show with int: " + x);
}
public void show(String s) {
System.out.println("Show with String: " + s);
}
}
Dans ce concept, on va explorer différents exemples et nuances de la surcharge de méthodes en Java.
Dans cet exercice, tu joues à un jeu de rôle nommé «\u00A0Wizard and Warriors\u00A0» avec tes meilleurs amis. Tu es le maître du jeu, la personne chargée de faire vivre le monde du jeu pour les joueurs. Un aspect essentiel de ce rôle consiste à décrire le jeu aux joueurs\u00A0: le statut d'un personnage, l'apparence de la ville qu'ils visitent, etc.
Cinq tâches t'attendent, qui te demandent de décrire certaines parties du jeu aux joueurs.
Chaque personnage a une classe, un niveau et un nombre de points de vie, et se décrit ainsi\u00A0: "You're a level <LEVEL> <CLASS> with <HIT_POINTS> hit points.".
Implémente la méthode GameMaster.describe qui prend un Character comme unique paramètre et renvoie sa description.
Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);
new GameMaster().describe(character);
// => "You're a level 4 Wizard with 28 hit points."
Chaque destination a un nom et un nombre d'habitants, et se décrit ainsi\u00A0: "You've arrived at <NAME>, which has <INHABITANTS> inhabitants.".
Implémente la méthode GameMaster.describe qui prend une Destination comme unique paramètre et renvoie sa description.
Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);
new GameMaster().describe(destination);
// => "You've arrived at Muros, which has 732 inhabitants."
Les personnages peuvent se rendre à une destination de deux manières\u00A0:
"You're traveling to your destination by walking."
"You're traveling to your destination on horseback."
Implémente la méthode GameMaster.describe qui prend un TravelMethod comme unique paramètre et renvoie sa description.
new GameMaster().describe(TravelMethod.HORSEBACK);
// => "You're traveling to your destination on horseback."
Quand un personnage voyage vers une destination, on décrit cela comme une combinaison des descriptions individuelles\u00A0: "<CHARACTER> <TRAVEL_METHOD> <DESTINATION>".
Implémente la méthode GameMaster.describe qui prend un Character, une Destination et un TravelMethod comme paramètres, et renvoie sa description.
Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);
Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);
new GameMaster().describe(character, destination, TravelMethod.HORSEBACK);
// => "You're a level 4 Wizard with 28 hit points. You're traveling to your destination on horseback. You've arrived at Muros, which has 732 inhabitants."
Dans la majorité des cas, les personnages se rendent à une destination à pied.
Pour plus de simplicité, les joueurs peuvent omettre de préciser leur mode de déplacement, auquel cas la marche est considérée comme le mode de déplacement.
Implémente la méthode GameMaster.describe qui prend un Character et une Destination comme paramètres, et renvoie sa description.
Character character = new Character();
character.setCharacterClass("Wizard");
character.setLevel(4);
character.setHitPoints(28);
Destination destination = new Destination();
destination.setName("Muros");
destination.setInhabitants(732);
new GameMaster().describe(character, destination);
// => "You're a level 4 Wizard with 28 hit points. You're traveling to your destination by walking. You've arrived at Muros, which has 732 inhabitants."
Inscris-toi sur Exercism pour apprendre et maîtriser Java avec 26 concepts158 exercices, et un vrai mentorat humain, le tout gratuitement.