title: Why in this case use Interface over Abstract class?
body: <p>I was reading a blog post here: <a href="http://codeofdoom.com/wordpress/2009/02/12/learn-this-when-to-use-an-abstract-class-and-an-interface/" rel="nofollow">http://codeofdoom.com/wordpress/2009/02/12/learn-this-when-to-use-an-abstract-class-and-an-interface/</a></p>
  
  <pre><code>public interface Actor{
     Performance say(Line l);
  }
  public interface Director{
     Movie direct(boolean goodmovie);
  }
  public interface ActorDirector extends Actor, Director{
  ...
  }
  </code></pre>
  
  <p>It says: 
  In reality, there are Actors who are also Directors. If we are using interfaces rather than abstract classes.<em>We could achieve the same thing using abstract classes. Unfortunately the alternative would require up to <strong>2^n</strong> (where n is the number of <strong>attributes</strong>) possible combinations in order to support all possibilities.</em></p>
  
  <p>Question: why abstract class is better here ? and why 2^n ?</p>
  
  <pre><code>public abstract class ActorDirector implements Actor,Director{
  }
  </code></pre>