title: choosing interface or abstract class
body: <p>In an interview it was asked to me to justify when to choose interface and when to choose abstract classes and in which conditions you will choose out of the two only one.. I have come up with my analysis for interface and that is...</p>
  
  <blockquote>
    <p>Interface is best choice for Type declaration or defining contract
    between multiple parties.
        If multiple programmers are working in different modules of a project they still use each others API by defining interface and not waiting
    for actual implementation to be ready. </p>
    
    <p>This brings us a lot of flexibility and speed in terms of coding and
    development. Use of Interface also ensures best practices like
    "programming for interfaces than implementation" and results in more
    flexible and maintainable code.</p>
  </blockquote>
  
  <p>But I don't have strong reasons to justify the abstract classes, Please advise..!</p>