That's not overriding. That's hiding. When you call with a StaticTest1 reference you get the StaticTest1 method. When you call with a StaticTest2 reference you get the StaticTest2 method. What you don't get is run-time
polymorphism, which is what true overriding would imply.