LINUX.ORG.RU
ФорумTalks

Java static method override


0

0

Вот здесь: 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]

Очень толстый троллинг, замаскированный под тонкий.

Изучите Джаву, сдайте сановский тест, а потом можете снова можете постить всякую чушь в форум.

Или опохмелитесь.

Bioreactor ★★★★★
()

В том коде, что ты привел, методы не статические и ошибка вполне соответствующая ситуации.

Кажется вещества не у Sun...

Ian ★★
()

Все же сходил по ссылке. Все написано правильно. Тебя смутила последняя часть, где написано, что компилятор для статических методов говорит override, а не hide? Ну, и пускай в общем-то. Правда я такого никогда не встречал.

Ian ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.