Start here. This is the direct spoken answer to practice first.
Why this question matters
Runtime polymorphism lets code call one contract while the runtime selects behavior from the actual object. In C#, interface calls and overridden virtual methods are common forms of dynamic dispatch.
Runtime polymorphism means the actual object's implementation is selected through a shared contract while the program runs. If a variable has type IShape and refers to a Circle, calling Area invokes Circle's implementation. With a base class, the base member must be virtual or abstract and the derived member must override it for runtime dispatch. This lets a collection of shapes be processed without a type switch, as long as each implementation preserves the contract.