Si vous écrasez un champ dans une sous-classe d'une classe, la sous-classe a deux champs avec le même nom (et type différent)?
-
12-11-2019 - |
Question
J'ai 3 cours:
public class Alpha {
public Number number;
}
public class Beta extends Alpha {
public String number;
}
public class Gama extends Beta {
public int number;
}
Pourquoi le code suivant compile-t-il? Et pourquoi le test passe-t-il sans aucune erreur d'exécution?
@Test
public void test() {
final Beta a = new Gama();
a.number = "its a string";
((Alpha) a).number = 13;
((Gama) a).number = 42;
assertEquals("its a string", a.number);
assertEquals(13, ((Alpha) a).number);
assertEquals(42, ((Gama) a).number);
}
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow