mam szybki i straighforward pytanie:Polimorfizm i metoda przeciążenia
mam tę prostą klasę:
public class A
{
public void m(Object o)
{
System.out.println("m with Object called");
}
public void m(Number n)
{
System.out.println("m with Number called");
}
public static void main(String[] args)
{
A a = new A();
// why will m(Number) be called?
a.m(null);
}
}
UPDATE: faktycznie jest metoda z liczba rzeczywiście miano. Przepraszam za zamieszanie.
Jeśli zadzwonię do a.m (null), wywołuje on metodę z parametrem Number.
Moje pytanie brzmi: dlaczego tak jest? gdzie w specyfikacji języka Java jest to określone?
... ponieważ 'null' nie jest obiektem' Number', przez co trafia do bardziej uogólnionego zasobnika 'Object'. – limc
To zabawne, ponieważ na moim komputerze (uruchomionym na zaćmieniu) domyślnie jest to metoda numer –
+1 interesujące pytanie –