Runtime polymorphism requires methods that can be overridden, which is done using virtual methods and overriding.
Step 2: Exclude other options
Method overloading is compile-time polymorphism, static methods cannot be overridden, and abstract classes alone don't enable polymorphism without virtual/override.
Final Answer:
Virtual methods and overriding -> Option C
Quick Check:
Runtime polymorphism = virtual + override [OK]
Quick Trick:Virtual and override keywords enable runtime polymorphism [OK]