Aidez moi à comprendre ce petit code java

hassan9090 -  
 danimo -
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!

2 réponses

  1. karirovax Messages postés 3584 Statut Membre 215
     
    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
  2. danimo
     
    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