Почему Java не позволяет переопределять статические методы? - PullRequest
497 голосов
/ 08 февраля 2010

Почему невозможно переопределить статические методы?

Если возможно, пожалуйста, используйте пример.

Ответы [ 22 ]

0 голосов
/ 24 февраля 2017

Теперь, увидев выше ответы, все знают, что мы не можем переопределить статические методы, но не следует неправильно понимать концепцию доступа к статическим методам из подкласса .

Мы можем получить доступ к статическим методам суперкласса со ссылкой на подкласс, если этот статический метод не был скрыт новым статическим методом, определенным в подклассе.

Например, см. Ниже код: -

public class StaticMethodsHiding {
    public static void main(String[] args) {
        SubClass.hello();
    }
}


class SuperClass {
    static void hello(){
        System.out.println("SuperClass saying Hello");
    }
}


class SubClass extends SuperClass {
    // static void hello() {
    // System.out.println("SubClass Hello");
    // }
}

Выход: -

SuperClass saying Hello

См. Документы Java oracle и поиск Что вы можете сделать в подклассе для получения подробной информации о сокрытии статических методов в подклассе.

Спасибо

0 голосов
/ 07 июня 2012

Следующий код показывает, что это возможно:

class OverridenStaticMeth {   

static void printValue() {   
System.out.println("Overriden Meth");   
}   

}   

public class OverrideStaticMeth extends OverridenStaticMeth {   

static void printValue() {   
System.out.println("Overriding Meth");   
}   

public static void main(String[] args) {   
OverridenStaticMeth osm = new OverrideStaticMeth();   
osm.printValue();   

System.out.println("now, from main");
printValue();

}   

} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...