Статические методы в Java не перегружаются. При объявлении в производном классе метода, который должен бы перегрузить метод базового класса, происходит лишь "скрытие" базового метода, т.е. то, какой метод из статических методов будет вызван, зависит от типа переменной, а не от того, на объект какого класса она указывает (как с невиртуальными методами в C++). Например:
class Foo {выведет:
public static void classMethod() {
System.out.println("classMethod() in Foo");
}
public void instanceMethod() {
System.out.println("instanceMethod() in Foo");
}
}
class Bar extends Foo {
public static void classMethod() {
System.out.println("classMethod() in Bar");
}
public void instanceMethod() {
System.out.println("instanceMethod() in Bar");
}
}
class Test {
public static void main(String[] args) {
Foo f = new Bar();
f.instanceMethod();
f.classMethod();
}
}
instanceMethod() in BarСпасибо http://www.coderanch.com/how-to/java/OverridingVsHiding.
classMethod() in Foo
Все перепутано! Перегрузка и переопределение - это разные вещи! Перегружать статические методы можно, а вот с переопределением возникнут трудности
ОтветитьУдалить