Le code suivant est correct en ce qui concerne la surcharge de méthode.Méthode de surcharge: conversion automatique du type de données
public class class7A {
public static void main(String[] args) {
testing obj_1 = new testing();
int a=12,b=14,c=20;
obj_1.func1(a,b,c); //invokes the 3rd method in the testing class
}
}
class testing{
void func1(int a,int b){
System.out.println("The values of length and breadth entered for the box is "+a+" "+b);
}
void func1(int a){
System.out.println("We can only talk about length here folks which is "+a);
}
void func1(double a,double b,double c){ //This method is invoked
System.out.println("The value of length ,breadth and height is "+a+","+b+","+c+" respectively");
}
}
Maintenant, l'explication donnée par le fait que la 3ème méthode est appelée, même lorsque les paramètres définis pour la 3ème méthode sont « double » est que java convertit automatiquement en deux int here.I sait aussi java toute opération ne sur le type primitif en convertissant d'abord les types en int à l'extrémité arrière qui est également vrai pour les octets. Cependant quand je change les paramètres de la 3ème méthode pour être de type octet au lieu de double, le code donne une erreur. Par exemple le code ci-dessous donne une erreur:
Pourquoi cela se passe-t-il donc?
public class class7A {
public static void main(String[] args) {
testing obj_1 = new testing();
int a=12,b=14,c=20;
obj_1.func1(a,b,c);
}
}
class testing{
void func1(int a,int b){
System.out.println("The values of length and breadth entered for the box is "+a+" "+b);
}
void func1(int a){
System.out.println("We can only talk about length here folks which is "+a);
}
void func1(byte a,byte b,byte c){ //This gives error
System.out.println("The value of length ,breadth and height is "+a+","+b+","+c+" respectively");
* "java convertit automatiquement le double en int ici" * Non, il ne le fait pas – Tom
@Tom, si cela ne peut pas vous expliquer, pourquoi les arguments int fonctionnent pour les paramètres définis comme étant de type "double"? –
Regardez simplement ___votre propre code ___. Pourquoi devrait-il convertir double en int, quand int est le type source et double le type cible? Cela n'a aucun sens de reculer en arrière. – Tom