can static methods be made to obey the laws of inheritance? Currently the static methods of an abstract base class cannot be marked as override, virtual or abstract.

How do static methods and fields of a class work? Does the compiler instantiate an object from the class and reserve that object as the holder of the static values?