Вот здесь: http://faq.javaranch.com/view?OverridingVsHiding
Есть интересная инфа на тему.
Если коротко: вопрос в том, можно ли перегрузить статический метод в Java? Ответ - нет. Однако сколько угодно можно использовать синтакисис перегрузки! Пишете статический метод, который "как будто бы перегружает" метод суперкласса. И всё компилируется. При этом происходит просто скрытие метода суперкласса.
Интересно то, что происходит в компиляторе Java6 под Linux.
Потому что если в "как-бы-перегруженном" методе изменить тип возвращаемого значения, то мгновенно получим ошибку типа такой:
cannot override method getA(); attempting to use incompatible return type
(код: class returner1 { public int getA() { return 1; } }
class returner2 extends returner1 { public String getA() { return "asd"; } })
замечаете в тексте ошибки слово OVERRIDE? а сам смысл ошибки?
если происходит действительно оверрайд, то почему работают тесты, приведенные по ссылке? если происходит скрытие, то откуда такая ошибка? [strike]в Sun принимают вещества? ))[/strike]