как уже говорили другие, static не полиморфен ... это означает, что он одинаков для класса, не специфичен для экземпляра. я не уверен, чего бы вы достигли, используя статический метод ... но вы могли бы заставить свою расширенную реализацию метода возвращать статическое значение:
public String getExtension() {
return STATIC_CONSTANT;
}
Полагаю, это зависит от того, чего вы пытаетесь достичь статическим методом. Из вашего поста: «Позвольте мне сказать, что все работает нормально, реализуя метод getExtension () экземпляра в каждом подклассе. Но дело в том, что метод фактически является статическим в подклассе, не зависит от экземпляра. Я просто говорю, что это не такая уж странная идея для меня. "
Проблема в том, что вы запрашиваете полиморфное поведение (изменение поведения метода для каждого подкласса) из чего-то, что определяет поведение для класса, а не для экземпляра. По определению статика не может быть полиморфной. Я надеюсь, что это поможет вам понять, почему это невозможно.