Résultat de compilation inattendu

Résolu
salut, j'ai ce code
    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' ;}
}
 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 eu cette resultat
2
-2
B
B
1
-2
A
A

3 réponses

  1. Modérateur
    C'est normal, tu substitues la fonction f de A dans B, donc c'est B qui gagne, c'est ça l'intérêt de l'héritage.
    1. ce n'est pas un principe de l'héritage c'est juste ca :
      Modifier Class Package Subclass World
      public Y Y Y Y
      protected Y Y Y N
      no modifier Y Y N N
      private Y N N N