Cela signifie que supposons que vous avez:
Object x = "hello";
Le type de la variable est Object
, mais le type de l'objet auquel il fait référence est String
. c'est le type de variable qui détermine ce que vous pouvez faire si - vous ne pouvez pas appeler
// Invalid
String y = x.toUpperCase();
Le compilateur sait seulement que vous appelez une méthode sur Object
, qui ne comprend pas toUpperCase
. De même, les méthodes surchargées ne sont résolus contre ceux que vous connaissez sur:
public class Superclass
{
public void foo(Object x) {}
}
public class Subclass extends Superclass
{
public void foo(String y) {}
}
...
Subclass x = new Subclass();
Superclass y = x;
x.foo("hello"); // Calls Subclass.foo(String)
y.foo("hello"); // Calls Superclass.foo(Object)
Où est cette citation tirée de? –
Désolé, mais je ne me souviens pas exactement que ... Laisser Je sais, si je ne suis pas autorisé à poser des questions sur la base de citations publiées sur certains sites. –
BTW, la citation n'apparaît pas dans une recherche Google ... à part pour cette page. Soit vous avez mal tapé, soit vous l'avez obtenu à partir d'un site Web qui n'est pas indexé par Google!?! –