Soy incapaz de entender cómo lo hace java "La elección de la más específica Método" regla en función de la sobrecarga de obras.
Tengo una clase en la que se alcanza la sobrecarga de funciones. Hay dos funciones con el mismo nombre "espectáculo". Una vez que acepta el argumento Tipo de objeto y otro acepta tipo String.
Voy a llamar a la función de propagación nula. El método con el argumento de tipo String se llama.
class Test
{
public void show(String s)
{
System.out.println("hi");
}
public void show(Object o)
{
System.out.println("hello");
}
public static void main(String s[])
{
Test t = new Test();
t.show(null);
}
}
La salida será "Hola". Por favor, me ayudan a entender la explicación.
Java siempre tratará de usar la versión más específica de un método que está disponible.
Los dos métodos
public void show(Object o) { ... }
public void show(String s) { ... }
podría tomar null
como un valor válido. En este escenario la sobrecarga de tomar un String
parámetro se utiliza, porque String
es más específico que Object
.
Si se agrega un tercer método
public void show(Integer t) { ... }
su código no se compilará más porque String
y Integer
no están relacionados. Ninguno de los dos es más específico que el otro y la compilación no es capaz de decidir cuál usar.