title: Difference between Interface and Abstract class in terms of Decoupling?
body: <p>As we know there are basically two important difference between Interface and Abstract class.</p>
  
  <ol>
  <li><p>We can have function definitions in abstract class. This is advantageous when we want to add a function in a class without need to track down it's all implementations.</p></li>
  <li><p>We can have multiple interface implementation.</p></li>
  </ol>
  
  <p>I just came to know that we can differentiate between them in terms of Decoupling?</p>
  
  <p>Your comments...</p>
  
  <p><strong>Also if you can you provide a very basic link that explains the Decoupling for Interface and Abstract class ?</strong> </p>
  
  <p>We normally use <strong>Business Logic Layer</strong>, <strong>Data Access Layer</strong>(contains abstract functions) and <strong>DataAccess.SqlServer Layer</strong>. Right? Despite of the fact that we aware of the Business needs, why are we creating <strong>Data Access Layer</strong>(contains abstract functions), Why can't <strong>Business Logic layer</strong> directly access <strong>DataAccess.SqlServer Layer</strong>?</p>