Because overloading is not overriding. The compiler binds methods based on the declared types of arguments.
Java function overloading query [duplicate]
-
22-07-2023 - |
Pergunta
A extends B
public class Test {
public static void print(A obj) {
System.out.println("print A");
}
public static void print(B obj) {
System.out.println("print B");
}
public static void main(String [] args ) {
A x = new B();
print(x);
}
}
Why it'll print "print A"? Why function overloading doesn't look up the real type of x in runtime?
Solução
Outras dicas
Why function overloading doesn't look up the real type of
x
in runtime?
Because function overloading doesn't look up the real type of x
at runtime, by JLS #8.4.9: "the number of actual arguments (and any explicit type arguments) and the compile-time types of the arguments are used, at compile time, to determine the signature of the method that will be invoked".
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow