A good answer might be:

Not surprising. You must have got it from your abstract parents.

Holiday

This stuff takes some thought, and some practice, and then some thought followed by practice. It took years and years and years for computer scientists to agree on this idea, and they have not stopped arguing about it. If you are confused, you might wish to continue on to Ph. D. work.

Abstract classes are used to organize the "concept" of something that has several different versions in the children. The abstract class can include abstract methods and non-abstract methods.

Here is a class definition for class Holiday. It is a non-abstract child of an abstract parent:

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");
  }
}

The class Holiday is not an abstract class. Objects can be instantiated from it. Its constructor implicitly calls the no-argument constructor in its parent, Card, which calls the constructor in Object. So even though it has an abstract parent, Holiday objects are as much objects as any other.

QUESTION 5:

Will each of the classes that inherit from Card have a greeting() method?