FeiertagDieser Stoff bedarf der Überlegung und der Übung. Es hat Jahre gedauert bis sich Informatiker über dieses Konzept geeinigt haben.
Abstrakte Klassen werden verwendet, um das "Konzept" von Etwas zu organisieren, das über verschiedene Versionen von Subklassen verfügt. Die abstrakte Klasse kann abstrakte und nicht-abstrakte Methoden enthalten.
Hier ist eine Klassendefinition für die Klasse Feiertag.
Es ist eine nicht-abstrakte Subklasse einer abstrakten Superklasse:
class Feiertag extends Karte { public Feiertag(String e) { empfaenger = e; } public void gruss() { System.out.println( "Dear " + empfaenger + ","); System.out.println("frohe Feiertage!"); } }
Die Klasse Feiertag ist keine abstrakte Klasse.
Von ihr können Objekte instanziiert werden.
Ihr Konstruktor ruft implizit den argumentenlosen
Konstruktor in ihrer Superklasse  Karte auf,
der wiederum den Konstruktor in Object aufruft.
Obwohl sie eine abstrakte Superklasse haben, sind
Feiertag-Objekte genauso Objekte wie all die anderen.
Feiertag erbt die abstrakte Methode gruss()
    von ihrer Superklasse.Feiertag muss eine gruss() Methode definieren, die einen Methodenkörper enthält (Anweisungen zwischen geschweiften Klammern).gruss() muss mit der in der Superklasse gegebenen Signatur übereinstimmen.Feiertag keine gruss() Methode definiert, dann müsste Feiertag als eine abstrakte Klasse deklariert werden.
    
Wird jede der (nicht abstrakten) Klassen, die von Karte erbt, eine
gruss() Methode haben?