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


This stuff takes thought and practice. It took years for computer scientists to agree on this idea, and they have not stopped arguing about it.

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.


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