title: Abstract Classes and Dependency Injection
body: <p>I am trying to understand how can I implement dependency injection, but I have some questions:</p>
  <ol>
  <li><p>Can I use abstract classes? I read some articles about DI and if I understand it well, they say that you have to use interfaces but not abstract classes - how can I avoid using duplicated code in different classes?</p>
  </li>
  <li><p>If I have many dependencies in a class, do I have to inject all of them in the constructor? What if I don't use all of them in all methods?</p>
  </li>
  <li><p>Can I instance objects? If I don't instance objects, how could I invoke the constructor of a class?</p>
  </li>
  </ol>