When to use variable of Interface type rather than concrete type
<p>I have a class which derives from an Interface. Now the class has to implement all the methods in the Interfaces + it additionally defines 2 more methods.
Now my question is , what is the benefit/usecases of doing this:</p>

<pre><code>IMyInterface varInt= new ConcreteImp();
</code></pre>

<p>over,</p>

<pre><code>ConcreteImp varInt= new ConcreteImp(); 
</code></pre>

<p>I see this pattern used every where in code blocks, but not sure why this is used.</p>
