Aidez moi à comprendre ce petit code java

Fermé
hassan9090 - Modifié par hassan9090 le 14/04/2010 à 19:42
 Utilisateur anonyme - 15 avril 2010 à 09:05
s.v.p
aide pour comprendre
j'ai exécuté le code suivant :

class A {
int i = 1 ;
int f() { return i ;}
static char g() { return 'A' ;}
}

class B extends A {
int i = 2 ;
int f () {return -i ;}
static char g() { return 'B' ;}
}

public class Test {
public static void main(String args[]) {
B b = new B() ;
System.out.println(b.i) ;
System.out.println(b.f()) ;
System.out.println(b.g()) ;
System.out.println(B.g()) ;

A a = b ;
System.out.println(a.i) ;
System.out.println(a.f()) ;
System.out.println(a.g()) ;
System.out.println(A.g()) ;
}
}

et j'ai le résultat :

2
-2
B
B
1
-2
A
A

je ne comprend pas d'où vient le 1

:(Merci!
A voir également:

2 réponses

karirovax Messages postés 3221 Date d'inscription dimanche 17 janvier 2010 Statut Membre Dernière intervention 22 juin 2016 203
14 avril 2010 à 19:44
salut ( juste une remarque )
je compend pas le java mais je trouve le prb arrive dans int f () {return -i ;} et je pense que si vous la remplacez par int f () {return i ;} peut être ca marche
bon chance
0
Utilisateur anonyme
15 avril 2010 à 09:05
Salut,

Non karirovax:

int f () {return -i ;} 
// qu'il serait mieux d'écrire
int f () 
{
return -i ;
} 

est la méthode f() sans paramètres >> () de la classe B et qui retourne un type int.
int f(): int précise le type du retour, f est le nom de la méthode, () il n'y a pas de paramètres, traitement:
{
return -i; rien d'autre que retourner -i et comme i =2 on retourne -2
}

appel de la méthode f:
B b = new B() ;  // création de l'objet b de la classe B car int i = 2 n'est pas static
// alors que l'appel est fait depuis la méthode main (static) de la classe Test
System.out.println(b.i) ; 
System.out.println(b.f()) ; // <<<<<<<<<<<<



hassan9090 >>>> "je ne comprend pas d'où vient le 1" :

A a = b ;  // est identique à A a = new B() ; car class B extends A
System.out.println(a.i) ;


le 1 vient de la classe A
class A { 
int i = 1 ; // créé en global donc visible depuis la classe Test


Cordialement,

Dan
0