Appelle méthode

Résolu/Fermé
Aminax Messages postés 81 Date d'inscription jeudi 26 septembre 2013 Statut Membre Dernière intervention 29 mai 2015 - 7 janv. 2014 à 09:47
Aminax Messages postés 81 Date d'inscription jeudi 26 septembre 2013 Statut Membre Dernière intervention 29 mai 2015 - 7 janv. 2014 à 11:38
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 jeudi 26 septembre 2013 Statut Membre Dernière intervention 29 mai 2015
7 janv. 2014 à 11:38
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 vendredi 18 novembre 2011 Statut Membre Dernière intervention 12 août 2015 2
7 janv. 2014 à 10:27
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 jeudi 10 juin 2010 Statut Membre Dernière intervention 18 juillet 2014 17
Modifié par irmeche le 7/01/2014 à 10:51
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