title: I'm not sure I "get" Interfaces
body: <p>Ok, I understand the basic concept of the interface, but I don't necessarily know that I "get" it's use.</p>
  
  <p>I'm in the middle of writing an app at home right now using the Abstract Factory design pattern. For practice, mostly, but my ultimate goal is to sell the app (but that's not for this site).</p>
  
  <p>Anyway, the book that I'm using as a reference uses an interface in the example.</p>
  
  <p>Wikipedia explains that "Interfaces are used to encode similarities which the classes of various types share, but do not necessarily constitute a class relationship."</p>
  
  <p>So that basically tells me that interfaces are used to ensure similarities between classes.</p>
  
  <p>So if I have an interface called Guitar, I can have an abstract class called GuitarAbstract, and other classes called BassGuitar, AcousticGuitar, ElectricGuitar, with all of the inheritance and implementation, etc.</p>
  
  <p>I understand, intellectually, the need and usage for interfaces. It just seems like additional, redundant code.</p>
  
  <p>Am I missing something there?</p>