public class Sprite { private int positionX; private int positionY; private int velocityX; private int velocityY; // You could put width and height instance variables // here if you thought the generic Sprite should have them. public Sprite(int x, int y, int vx, int vy) { positionX = x; positionY = y; velocityX = vx; velocityY = vy; } public void step() { // Move the Sprite one step in the direction and magnitude // of its velocity. Subclasses may want to supplement this // behavior (or not) by calling super.step() followed by // any desired additional stepping actions. } public void draw(Graphics g) { // This will just be a stub, to be overridden in the // child classes. (Or you could draw a default Sprite // if you wanted to. I could see it for testing purposes-- // maybe a black rectangle or something.) } /* ... other methods you think the parent should have ... */ /* ... accessors ... */ }