Instanziierung abstrakter Klassen

vjung

Aktives Mitglied
Hallo Leute,
Ich habe vorhin 1 stunde damit verbracht zu lernen das abstrakte NIEMALS instanziiert werden, so weit so gut, nun habe ich am ende des Kapitels folgende Programmieraufgabe:
Das Grusskarten-Beispiel hat in der deutschen Übersetzung einen kleinen Schönheitsfehler. Erweitern Sie die abstrakte Klasse Karte um die Instanzvariable String anrede und um einen Konstruktor, der die Variablen empfaenger und anrede initialisiert.

So ich dachte ich ich kann diese Klasse nicht instanziieren, inwiefern macht dann ein Konstruktor Sinn? Der wird doch dafür benötigt um etwas zu instanziieren. Habe nämlich den Konstruktor erstellt, nun so können jedoch die Subklassen die ich instanziieren will nicht instanziiert werden, da diese keine Parameter zu der abstrakten Superklasse werfen.
 
Ja, abstrakte Klassen kann man nicht instanzieren. Wenn man jedoch von einer abstrakten Klasse erbt, kann man natürlich von dieser Klasse Objekte erstellen. In dieser Aufgabe wird dies durch das Wort "Erweitern" ausgedrückt. Damit meint man, dass man eine neue Klasse erstellen soll, und von dieser abstrakten Klasse erbt...
 
Habe nun dieses versucht: Bekomme jedoch 2 Fehler:
Java:
abstract class Karte
{
  String anrede;
  Karte(String anrede){
  this.anrede = anrede; 
  }
  public abstract void gruss();
}

class Geburtstag extends Karte
{
  public Geburtstag(String anrede){  //required: String  found: no arguments
    Karte(anrede);                           // cannot find Symbol
  }
   public void gruss()
   {
     System.out.println("Alles gute zum Geburtstag "+ anrede);
   }
}

class KarteTester
{
public static void main(String[] args)
{
   Karte geburtstag = new Geburtstag("Alfred");
   geburtstag.gruss();
}
}
 
Den Super-Konstruktor, ruft man durch "super" auf. Nicht durch den Klassennamen.
Java:
abstract class Karte
{
  String anrede;
  Karte(String anrede){
  this.anrede = anrede;
  }
  public abstract void gruss();
}

class Geburtstag extends Karte
{
  public Geburtstag(String anrede){  //required: String  found: no arguments
    super(anrede);                           // cannot find Symbol
  }
   public void gruss()
   {
     System.out.println("Alles gute zum Geburtstag "+ anrede);
   }
}

public class Main
{
public static void main(String[] args)
{
   Karte geburtstag = new Geburtstag("Alfred");
   geburtstag.gruss();
}
}
 

Zurück
Oben