You can't override static methods because the method isn't related to any specific instance of the class, but shared between all instances - so it can't be virtual.
What that means is that when you access a non-static method, you do it via an instance - in much the same way that you use "my car", "your car", "this car", or "that car" to specify a single individual vehicle from the "phase space" of all possible cars. Using that instance, you can ask questions, or get information:
What colour is your car?
What fuel does this car use?
You can't ask those questions without specifying a particular car because "what colour is a car?" is a ridiculous question - it doesn't have a single answer. But you can say "how many wheels has a car?" because by definition, all cars have four wheels - you don't need an instance to ask the question.
In C# terms, "how many wheels?" is a static method - you access it via the class name rather than via an instance. Which means you always call the same method - to call a static method of the same name in a derived class you would have to use the derived class name instead.
Non-static methods are different: they are accessed via the actual instance which can be of a class or a derived class - and the system can select the "highest" override of a method for the actual class of the instance when you try to access it.