Les avantages et les inconvénients de la méthode de surcharge en Java
Les méthodes surchargées sont des méthodes de la même classe qui partagent le même nom mais acceptent différents types de variables comme arguments. Par exemple, une classe peut contenir deux méthodes "add" différentes :une qui accepte deux valeurs doubles, "add(double a, double b)", et une qui accepte deux valeurs entières, "add(int a, int b). " L'ordinateur décide automatiquement quelle méthode appeler au moment de l'exécution en fonction des types de variables transmis à la méthode.
Flexibilité
Les méthodes surchargées donnent aux programmeurs la possibilité d'appeler une méthode similaire pour différents types de données. Si vous travaillez sur un programme de mathématiques, par exemple, vous pouvez utiliser la surcharge pour créer plusieurs classes "multiply", dont chacune multiplie un nombre différent de type d'argument :le plus simple "multiply(int a, int b)" multiplie deux entiers ; la méthode plus compliquée "multiply(double a, int b, int c)" multiplie un double par deux entiers - vous pouvez alors appeler "multiply" sur n'importe quelle combinaison de variables pour lesquelles vous avez créé une méthode surchargée et recevoir le bon résultat.
Constructeurs
La surcharge est également utilisée sur les constructeurs pour créer de nouveaux objets en fonction de différentes quantités de données. Par exemple, vous pouvez utiliser la surcharge pour créer trois constructeurs différents pour un objet "House" avec un numéro de maison, un nom de rue et des variables de couleur. Le constructeur le plus simple "House()" ne prend aucun argument et crée une maison avec des variables par défaut ou vides. Un constructeur plus complexe, "House(int houseNumber, String streetName)", crée une maison avec le numéro de maison et le nom de rue spécifiés, mais une couleur par défaut ou vide. Le constructeur le plus complexe, "House(int houseNumber, String streetName, String color)", crée une maison avec toutes les informations spécifiées, ne laissant rien par défaut. Vous pouvez ensuite créer un objet maison basé sur les informations actuellement disponibles, les informations non disponibles étant laissées vides ou par défaut.
Références ambiguës
Les méthodes surchargées doivent utiliser des nombres ou des types d'arguments différents pour éviter toute ambiguïté. Si vous créez deux méthodes dans la même classe qui ont le même nom et acceptent deux entiers comme arguments, le compilateur Java ne pourra pas faire la distinction entre les deux, même si les variables d'entrée ont des noms différents. Par exemple, la méthode "add(int a, int b)" ne peut pas exister dans la même classe que la méthode "add(int c, int d)."
Types de retour
Vous devez définir un type de retour pour chaque méthode surchargée. Les méthodes peuvent avoir différents types de retour -- par exemple, "add(int a, int b)" peut renvoyer un entier, tandis que "add(double a, double b)" renvoie un double. Cependant, Java ne peut pas faire la distinction entre deux méthodes différentes en fonction de leur type de retour. Par conséquent, "int multiplier(double a, double b)" ne peut pas exister dans la même classe que "double multiplier(double a, double b)."