Je n'ai pas la réponse exact mais à mon avis la réponse viens du cast qui est effectué
subFoo = new SubCafe4Java();
superFoo = subFoo;
System.out.println (superFoo.get("super"));
En effet superFoo est du type SuperCafe4Java et on lui passe une classe du type SubCafe4Java ,
--> le passage marche parceque SubCafe4Java hérite de SuperCafe4Java ( pour faire une comparaison c'est comme qd on cast un string en Object)
Le problème c'est que SuperCafe4Java ne connait que ces méthodes donc c'est normal qu'il n'affiche que le message SuperCafe4Java.
D'ailleur pour faire le test essaye de cast un String en Object et regarde les méthode de ton objet Object (y a pas celle de String ^^)

Nare Trouvé !!!
