You need to read a little more about the difference between overriding and hiding :
Link: Override versus Hide
In a nutshell:
Hiding (using the new one) starts the method according to the type of variable.
Overriding overrides the method and will only use the child method.
Edit
When using an interface variable:
var i = (IBaseInterface) (new ChildClass());
The compiler will look for the best match for the methods used by the interface.
Since you declared BaseClass to implement the interface, its methods will be selected.
If ChildClass does not explicitly implement the interface, then the compiler cannot associate methods with the interface. In his opinion, BaseClass just has methods with the same name.
When you explicitly declare that ChildClass also implements the interface, its methods will be the best choice.
source share