FB18 - Das Forum für Informatik

fb18.de / Diplom Informatik / Unterbereich Grundstudium / Praktische Informatik

P2 Blatt H

P2 Blatt H 2004-05-25 01:25
Dennis-
Hi

hab ne Frage zu dem Thema Abstrake Klassen / Subklassen / Konstruktoren etc…

Ich habe bereits die Abstrakte Klasse geschrieben (und die doppelten Methoden/Variablen aus cd, dvd, vs gelöscht) und bin mir auch ziemlich sicher, dass sie so richtig ist.

Probleme hab ich nun nur mit den Konstruktoren.

Ist es richtig, dass ich in der Abstrakten Klasse
public AbstractMietbaresMedium(String titel, String kommentar) als Konstruktor habe, mit dem Rumf, der Großteils aus CD(DVD, VS) kopiert ist und _NUR DIE_ entsprechend - doppelt vorkommenden - Variablen setzt? Vermutlich ja

Wie läuft das aber nun mit den Konstruktoren in den Subklassen CD(DVD, VS)?

Ich hatte erwartet, es genüge dort nun die 'dazugekommenen' Variablen zu initialisieren (wie beispielsweise _system).
public Videospiel(String titel, String kommentar, String system) { super.AbstractMietbaresMedium(titel, kommentar); if (system == null) { throw new NullPointerException(); } _system = system; }
Fehlermeldung:
AbstractMietbaresMedium(java.lang.String, java.lang.String) in AbstractMietbaresMedium cannot be applied to ()

Vermutlich hab ich Fehler bei der Parameterübergabe oder der Reihenfolge der Konstruktoren oder so.. kann mir jemand helfen?

Source von AbstractMietbaresMedium und VideoSpiel hab ich hier: http://nopaste.php-q.net/60914 geuppt.

Re: P2 Blatt H 2004-05-25 01:30
Eddie
Wenn ich mich recht entsinne, kommt in die abstrakte Klasse gar kein Konstruktor.
Nur die konkreten, die von ihr erben, haben Konstruktoren.

Re: P2 Blatt H 2004-05-25 01:39
Dennis-
sorry, hab vergessen das Übungsblatt zu verlinken (wobei es nur im CommSy ist? also verboten?)

auf jedenfall steht zu konstruktoren in Oberklassen folgendes:

>> Obwohl von abstrakten Klassen keine direkten Exemplare erzeugt werden können, sind sie doch dafür
zuständig, ihren Zustand (ihre Exemplarvariablen) zu initialisieren. Deshalb haben Oberklassen, ob
abstrakt oder nicht, Konstruktoren. Bei der Erzeugung eines Exemplars werden entlang der
Klassenhierarchie, bei der obersten Klasse beginnend, Konstruktoren aller Oberklassen ausgeführt,
um den inneren Zustand des Objekts schrittweise zu initialisieren. Dabei wird im jeweiligen
Unterklassenkonstruktor festgelegt, welcher Konstruktor der Oberklasse zuvor ausgeführt wird: Die
erste Anweisung in einem Konstruktor muss der Aufruf des Oberklassenkonstruktors über das
Schlüsselwort super sein (wenn dieser Aufruf fehlt und die Oberklasse einen parameterlosen
Konstruktor hat, wird automatisch dieser verwendet). Es entsteht so eine Konstruktorkette
(Constructor chain). <<

Re: P2 Blatt H 2004-05-25 02:17
Fred
super.AbstractMietbaresMedium(titel, kommentar);
Versuchs mal mit
super(titel, kommentar);

Re: P2 Blatt H 2004-05-25 02:28
Dennis-
[img]http://www.fb18.de/gfx/danke.gif[/img] genau das wars!
übersetzt ohne beanstandung :))