Appelle méthode

Résolu
Aminax Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   -  
Aminax Messages postés 81 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

j'ai besoin de l'aide ! je n'arrive pas à comprendre pourquoi la méthode add de la classe computer qui sera appeler lors de m.add(9,5) et non pas de SuperComputer ??? merci d'avance
public class Computer 
{
public static int add (int a, int b)
{
return a + b;
}
}
public class SuperComputer extends Computer
{
public static int add (int a, int b)
{
return 0;
}
}
public class Test
{
public static void main (String[] args)
{
Computer pc = new SuperComputer();
int sum = pc.add (9, 5);
System.out.println (sum);
}
}

3 réponses

Aminax Messages postés 81 Date d'inscription   Statut Membre Dernière intervention  
 
oui le fait que add est une méthode static , donc en regarde uniquement le type de la variable Computer et pas le type réel de l'objet SuperComputer ... Merci :)
0
Atloka Messages postés 24 Date d'inscription   Statut Membre Dernière intervention   2
 
Salut,

Remplace "Computer pc = new SuperComputer();" par "SuperComputer pc = new SuperComputer();"
La méthode "add" est re-définie dans SuperComputer et donc masque la définition de add de Computer.
Donc a l'appel de la méthode add, celle-ci est d'abord recherchée dans la classe SuperComputer où se trouve une (re)définition.

Have fun ! ;)

Atloka
-1
irmeche Messages postés 71 Date d'inscription   Statut Membre Dernière intervention   17
 
il faut enlever le static pour la méthode add pour corriger ton problème

Pour information une méthode static tu peux l'appeler comme suis:

int sum = Computer.add (9, 5);  // appelle Computer
int sum = SuperComputer.add (9, 5);  // appelle SuperComputer
-1