+ 1

Можно ли переопределять или перегружать статические методы в Java?

https://code.sololearn.com/c5qiFCG71pXY/?ref=app Почему нет, если в данном примере всё работает? Или я что-то не понимаю до конца.

2nd Oct 2020, 2:12 PM
Элеонора Сергеева
Элеонора Сергеева - avatar
3 Answers
+ 1
Вы не можете переопределить статические методы ... Если вы так пишете, это не отменяет ... Делает отдельные индивидуальные методы ... Принадлежит к собственным классам, не связанным с наследованием ... Edit : Eleonora Lyonesse You cannot override static methods.. If you write like that, it's not overriding.. It's making separate individual methods.. Belong to there own classes, not related to inheritance.. Check this code for differences by removing static and with static.. public class Program { public static void main(String[] args){ StaticB b = new StaticB(); b.staticMethod1(); b.staticMethod1("overloaded "); StaticA a=(StaticA)b; a.staticMethod1(); a.staticMethod1("overloaded "); } }
2nd Oct 2020, 2:23 PM
Jayakrishna 🇮🇳
+ 1
Перегружать можно, переопределять нет. В случае со статическими методами это не переопределение (overriding), а сокрытие (hiding). https://code.sololearn.com/cdM83k5vWW4U/?ref=app Статические методы пренадлежат классу, а не экземпляру класса. Какой метод вызовется определяется на этапе компиляции, а не по ходу выполнения программы. Поэтому когда вы "переопределяете" статический метод, на самом деле вы создаете новый. По коду выше видно, что статические методы вызываются по типу ссылки, а не статические по типу объекта, на которые ссылки указывают.
2nd Oct 2020, 3:02 PM
Aleksandrs
Aleksandrs - avatar
2nd Oct 2020, 3:18 PM
Элеонора Сергеева
Элеонора Сергеева - avatar