Общий ответ требует нескольких страниц для объяснения; см. соответствующий раздел в спецификации языка .
В конкретном случае, который вы представляете, он просто не скомпилируется. Но в других случаях существуют правила, по которым компилятор может предпочесть одну перегрузку другой и разрешить конфликт.
Самое важное правило заключается в том, что, в общем случае, если один метод более специфичен , чем другие, этот метод выбирается. Метод A является более конкретным , чем метод B, если все возможные вызовы метода A также будут компилироваться при вызове метода B. Обычно это означает, что некоторые формальные параметры метода A подклассы из соответствующих формальных Параметр (ы) в методе B. Есть несколько случаев, когда это не будет применяться, например, когда потребуется автоматическая упаковка или другое «преобразование метода», чтобы аргумент соответствовал в противном случае «более конкретному» случаю. Подробности см. В спецификации.