title: Coding to interfaces?
body: <p>I want to solidify my understanding of the "coding to interface" concept. As I understand it, one creates interfaces to delineate expected functionality, and then implements these "contracts" in concrete classes. To use the <em>interface</em> one can simply call the methods on an instance of the concrete class.</p>
  
  <p>The obvious benefit is knowing of the functionality provided by the concrete class, irrespective of its specific implementation. </p>
  
  <p>Based on the above: </p>
  
  <ol>
  <li>Are there any fallacies in my understanding of "coding to interfaces"?</li>
  <li>Are there any benefits of coding to interfaces that I missed?</li>
  </ol>
  
  <p>Thanks.</p>