zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Das ist nicht überraschend. Sie müssen das von Ihren abstrakten Eltern mitbekommen haben.

Feiertag

Dieser Stoff bedarf der Überlegung und der Übung. Es hat Jahre gedauert bis sich Informatiker über dieses Konzept geeinigt haben und sie haben nicht aufgehört darüber zu diskutieren.

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 + ",\n");
    System.out.println("frohe Feiertage!\n\n");
  }
}

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.

FRAGE 5:

Wird jede der (nicht abstrakten) Klassen, die von Karte erbt, eine gruss() Methode haben?