Why is it that we cannot override static and final methods?

java

Solution

`final` methods can't be overriden, because that's what `final` is designed to do: it's a sign saying "do not override this".

`static` methods can't be overriden, because they are never called in a polymorphic way: when you call `SomeClass.foo()` it will always be the `foo` method of `SomeClass`, no matter if there is another `ExtendedSomeClass` that has a much groovier `foo` method.

Problem

I am trying to understand why we can't override static and final methods. I do not get the purpose behind it.

Original source

Related problems