title: Abstraction Vs. Interface Confusion
body: <p><em>Wait, before you start thinking, I would like to clear that I am <strong>NOT</strong> going to ask the routine differences between Interface and Abstract.</em></p>
  
  <p>I had gone through the difference between Abstract and Interface in <a href="http://www.google.co.in/url?sa=t&amp;rct=j&amp;q=&amp;esrc=s&amp;source=web&amp;cd=1&amp;ved=0CFsQFjAA&amp;url=http://msdn.microsoft.com/en-us/library/scsyfw1d%28v=vs.71%29.aspx&amp;ei=wcETUN7RHYX4rQf2yYDYCg&amp;usg=AFQjCNETMTxWBiRrevXYVUyhAUj8sBDAbw" rel="nofollow noreferrer">MSDN</a>.</p>
  
  <p>It is said :</p>
  
  <blockquote>
    <p><em>By updating the base class, all inheriting classes are automatically updated with the change.</em><br>
    <em>Interfaces, on the other hand, cannot be changed once created. If a new version of
     an interface is required, you must create a whole new interface.</em></p>
  </blockquote>
  
  <p>See this : -
  <img src="https://i.stack.imgur.com/4EATS.png" alt="Difference between Abstract and Interface"></p>
  
  <p>Can anyone prove this using following example: -</p>
  
  <pre><code>abstract class WashingMachine
  {
     abstract public void Wash();
  }
  
  
  class Philips : WashingMachine
  {
     public Philips() {  }
  
     override public void Wash(){//Wash code here....}
  }
  
  class Samsung : WashingMachine
  {
     public Samsung() {  }
  
     override public void Wash(){//Wash code here....}
  }
  
  class Videocon : WashingMachine
  {
     public Videocon() {  }
  
     override public void Wash(){//Wash code here....}
  }
  </code></pre>
  
  <p>Now, If I added following new abstract method in <strong>WashingMachine</strong> : -</p>
  
  <pre><code>abstract public void Rinse(int loadSize);
  </code></pre>
  
  <p>How all inheriting classes (i.e. Philips/Samsung/Videocon) will <strong><em>automatically</em></strong> get updated with the change?</p>