Yes.  All that Card asked for was:
public abstract void greeting();
Each sibling did that in its own way.
Here is a complete program with all three card classes and objects of each type. If you were deficient in greeting cards this year, you might wish to copy this program to a file and run it a few times.
import java.util.*;
abstract class Card
{
  String recipient;
  public abstract void greeting();
}
class Holiday extends Card
{
  public Holiday( String r )
  {
    recipient = r;
  }
  public void greeting()
  {
    System.out.println("Dear " + recipient + ",\n");
    System.out.println("Season's Greetings!\n\n");
  }
}
class Birthday extends Card
{
  int age;
  public Birthday ( String r, int years )
  {
    recipient = r;
    age = years;
  }
  public void greeting()
  {
    System.out.println("Dear " + recipient + ",\n");
    System.out.println("Happy " + age + "th Birthday\n\n");
  }
}
class Valentine extends Card
{
  int kisses;
  public Valentine ( String r, int k )
  {
    recipient = r;
    kisses    = k;
  }
  public void greeting()
  {
    System.out.println("Dear " + recipient + ",\n");
    System.out.println("Love and Kisses,\n");
    for ( int j=0; j < kisses; j++ )
      System.out.print("X");
    System.out.println("\n\n");
  }
}
public class CardTester
{
  public static void main ( String[] args )
  {
    String me;
    Scanner input = new Scanner( System.in );
    System.out.print("Your name: ");
    me = input.next();
    Holiday   hol = new Holiday( me );
    hol.greeting();
    Birthday  bd  = new Birthday( me, 21 );
    bd.greeting();
    Valentine val = new Valentine( me, 7 );
    val.greeting();
  }
}
        This is a fairly long program ― 80 lines! Do you think that you could design a few more card classes without any problems?