l'appelle d'une méthode add(..) - Java - Programmation
Marsh Posté le 07-01-2014 à 09:54:19
Tes méthodes "add" sont déclarées "static", elle sont donc définies au niveau de la classe, pas de l'instance.
Il n'y a pas besoin du "new SuperComputer()", et les appels devraient se faire via "Computer.add(...)" ou "SuperComputer.add(...)".
Même si Java accepte les appels via une instance comme tu le fais, c'est fortement déconseillé. C'est en fait le compilateur qui va transformer l'appel à la méthode en un appel statique, en regardant uniquement le type de la variable (et pas le type réel de l'objet, qui n'est pas forcément connu à la compilation). Donc dans ton cas, le compilateur va transformer "pc.add(9, 5)" en "Computer.add(9, 5)", ce qui explique le résultat que tu obtiens.
Pour obtenir ce que tu veux, tu peux simplement enlever le mot clé "static" sur tes méthodes "add".
Marsh Posté le 07-01-2014 à 09:37:56
Bonjour ;
j'ai besoin de l'aide ! je n'arrive pas à comprendre pourquoi la methode add de la classe computer qui sera appeler lors de m.add(9,5) et non pas de SuperComputer ??? et 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);
}
}
Message édité par aminaxs le 07-01-2014 à 09:46:23