title: Abstract Base Class or Class?
body: <p>For my semester project, my team and I are supposed to make a .jar file (library, not runnable) that contains a game development framework and demonstrate the concepts of OOP. Its supposed to be a FRAMEWORK and another team is supposed to use our framework and vice-versa. So I want to know how we should start. We thought of several approaches:<br>
  1. Start with a plain class  </p>
  
  <pre><code>public class Enemy {
      public Enemy(int x, int y, int health, int attack, ...) {
          ...
      }
      ...
  }
  public class UserDefinedClass extends Enemy {
      ...
  }
  </code></pre>
  
  <p>2. Start with an abstract class that user-defined enemies have to inherit abstract members</p>
  
  <pre><code>public abstract class Enemy {
      public Enemy(int x, int y, int health, int attack, ...) {
          ...
      }
      public abstract void draw();
      public abstract void destroy();
      ...
  }
  public class UserDefinedClass extends Enemy {
      ...
      public void draw() {
          ...
      }
      public void destroy() {
          ...
      }
  }
  </code></pre>
  
  <p>3. Create a super ABC (Abstract Base Class) that ALL inherit from</p>
  
  <pre><code>public abstract class VectorEntity {
      ...
  }
  public abstract class Enemy extends VectorEntity {
      ...
  }
  public class Player extends VectorEntity {
      ...
  }
  public class UserDefinedClass extends Enemy {
      ...
  }
  </code></pre>
  
  <p>Which should I use? Or is there a better way?</p>