Разрешение перегрузки метода определяется во время компиляции на основе типа времени компиляции переменной, содержащей ссылку на экземпляр, для которого вы вызываете метод.
void overloadedMethod(int N)
определено только в подклассе mine
. Поэтому при вызове метода для ссылки, тип которой является базовым классом WrapperClasses
, только методы базового класса могут рассматриваться для разрешения перегрузки.
Аргумент int
, который вы передаете методу, не соответствует ни одному из 3 методов базового класса, но после того, как он упакован в Integer
, он соответствует методу void overloadedMethod(Number N)
.
Если вы измените свой код на
int i = 21;
mine wr = new mine();
wr.overloadedMethod(i);
будет выполнено void overloadedMethod(int N)
.