Abstract classes in Blackjack game From what I've read, I should use abstract classes when I want to define behavior for a superclass, and I don't want to instantiate the superclass. So, I'm making a Blackjack game in Java, and I want a BlackjackDealer class and a BlackjackPlayer class. Would it be okay to make these children of a BlackjackPerson  class, since some of the behavior should be the same? An example of behavior that should be the same:

abstract class BlackjackPerson {

   protected Card[] cards;
   public void hit(Card c) {
       // add c to cards
   }

   public abstract void displayHand();
   // print out hand
}


An example of a BlackjackDealer class, with its own implementation of the displayHand method (since a dealer has 1 card hidden):

class BlackjackDealer extends BlackjackPerson {
    public void displayHand() {

        for (Card c : cards) {
            System.out.println(c);
        }
    }
}


This is my first time using inheritance, I just want to know if I'm on the right track.
Look for common functionality

The real power of inheritance comes from the existence of common functionality.  In this case, the dealing of cards and the calculation of totals will be common to both players and dealers, and so having both of these in the parent class would be a good choice.

Look for differing functionality

A dealer will have rules on when they hit and when they stay.  A player will likely have an amount bet and a chip balance.  These would be candidates for inclusion in the child classes.