Как говорили другие, у вас не может быть абстрактных статических методов.Я попытаюсь объяснить , почему .
Статический член прикреплен только к одному классу - тому, в котором он определен. Он не может быть унаследован.Проблема в том, что синтаксис Java заставляет его выглядеть так, как будто вы можете его унаследовать;если родительский класс A имеет статический метод f (), и вы пишете подкласс B, то вы можете вызвать метод следующим образом: B.f()
.Тем не менее, вы на самом деле звоните A.f()
.Это бессмысленное различие, если вы не сделаете что-то вроде этого:
class A {
public static String s = "a";
public static String f() {
return s;
}
}
class B extends A {
public static String s = "b";
}
Здесь A.f()
и B.f()
оба возвратят «a».
Итак: если вы можете 't наследовать статический метод, тогда вы не можете переопределить его;и если вы не можете переопределить его, то делать его абстрактным было бы бессмысленно.