Why is overloading called compile time polymorphism and Overriding run time polymorphism in C#?
Because it's known at compile time which of your overloaded functions is called, but that is not always the case for an overridden function.