Résultat de compilation inattendu

Résolu/Fermé
maimoun - Modifié par NHenry le 18/08/2015 à 13:40
 maimoun - 19 août 2015 à 11:23
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
A voir également:

3 réponses

NHenry Messages postés 15172 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 décembre 2024 350
18 août 2015 à 15:51
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
NHenry Messages postés 15172 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 11 décembre 2024 350
18 août 2015 à 13:41
Et quel était le résultat attendu ?
0
2
-2
B
B
1
1
A
A
0
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
-1