Significa que suponga que tiene:
Object x = "hello";
El tipo de la variable de es Object
, pero el tipo de objeto al que se refiere es String
. que es el tipo de variable que determina lo que puede hacer, aunque - por lo que no se puede llamar
// Invalid
String y = x.toUpperCase();
El compilador sólo sabe que usted está llamando a un método en Object
, que no incluye toUpperCase
. Del mismo modo, los métodos sobrecargados solamente se resuelven en contra de los que saben acerca de:
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)
Dónde está esta cita tomada de –
? lo siento, pero no recuerdo exactamente eso ... Dejar ya sé, si no puedo hacer preguntas basadas en citas publicadas en algunos sitios web. –
Por cierto, la cita no aparece en una búsqueda de Google ... aparte de esta página. ¿O lo escribiste mal o lo obtuviste de algún sitio web que no está indexado por Google? –