Abstract classes are used to organize the "concept" of something that has several different versions in the children. An 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; // recipient in Card is protected, so this works
}
public void greeting()
{
System.out.println("Dear " + recipient + ",");
System.out.println("Season's Greetings!\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,
a Holiday object is just as much an object as any other.
Holiday inherites the abstract method greeting()
from its parent.Holiday must define a greeting() method that includes
a method body (statements between braces).greeting() must match the signature given in the
parent.Holiday did not define greeting(), then Holiday
must be declared to be an abstract class.
Will each class that inherits from Card have
a greeting() method?