The answer to this question, as to so many "why" questions, is "because the
Java Language Specification says so".
Overriding is to do with run-time
polymorphism. The Java language only implements run-time polymorphism for instance methods, not for fields or static methods. That's a choice the language designers made. They could have chosen differently, though in this case I think they chose well.