Я могу переопределить и статические методы перегрузки в Java?

Я хотел бы знать:

  1. Почему статические методы не могут быть переопределены в Java?
  2. Статические методы могут быть перегружены в Java?
57
задан Paŭlo Ebermann 20 August 2011 в 13:30
поделиться

2 ответа

Статические методы не могут быть переопределены, потому что они не отправляются в экземпляр объекта во время выполнения. Компилятор решает, какой метод вызвать.

Вот почему вы получаете предупреждение компилятора, когда пишете

 MyClass myObject = new MyClass();
 myObject.myStaticMethod();
 // should be written as
 MyClass.myStaticMethod()
 // because it is not dispatched on myObject
 myObject = new MySubClass();
 myObject.myStaticMethod(); 
 // still calls the static method in MyClass, NOT in MySubClass

Статические методы могут быть перегружены (это означает, что у вас может быть одно и то же имя метода для нескольких методов, если они имеют разные типы параметров).

 Integer.parseInt("10");
 Integer.parseInt("AA", 16);
10
ответ дан 24 November 2019 в 19:25
поделиться

Статические методы нельзя переопределить, потому что переопределить нечего, поскольку это были бы два разных метода. Например

static class Class1 {
    public static int Method1(){
          return 0;
    }
}
static class Class2 extends Class1 {
    public static int Method1(){
          return 1;
    }

}
public static class Main {
    public static void main(String[] args){
          //Must explicitly chose Method1 from Class1 or Class2
          Class1.Method1();
          Class2.Method1();
    }
}

И да, статические методы могут быть перегружены, как и любой другой метод.

25
ответ дан 24 November 2019 в 19:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: