Appelle méthode

Résolu
Aminax Messages postés 88 Statut Membre -  
Aminax Messages postés 88 Statut Membre -
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 88 Statut Membre
 
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 28 Statut Membre 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 76 Statut Membre 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