als Java-Anfänger probiere ich ein wenig 'rum und bin auf folgendes Problem gestoßen:
ich habe eine Klasse A mit ein paar Konstruktoren und Methoden. Alle Konstruktoren werfen Exeptions.
Leite ich nun von dieser Klasse eine andere B ab, so meldet NetBeans:
unreported Exception java.lang.Exeption in default constructor
Irgendwie verstehe ich da nicht, da in der Vaterklasse alle Methoden und Konstruktoren mit "throws Exception" ausgestattest sind ...
Der Default- also parameterlose Konstruktor darf demnach keine (Checked) Exceptions schmeissen. Kann das allerdings mit Sun JDK 1.6.x nicht bestätigen - und verwende auch kein NetBeans...
Edit: hab den Fehler nochmals genauer durchgelesen. Ist nur eine Warning? Da fehlt wohl Javadoc o.ä....
danke, das geht. Allerdings finde ich das etwas umständlich, da dann ja wohl für jeden Konstruktor in der abgeleuteten Klasse auch einen Konstruktor mit dem Aufruf super einbauen muss - oder ?
Ach so, du hattest keinen Konstruktor definiert.
Da der Defaultkonstruktor jeweils [c]super()[/c] aufruft, musst du, sobald deine Klasse von einer ableitet, welche keinen Defaultkonstruktor besitzt, explizit einen Konstruktor schreiben und den jeweiligen aufrufen.
Das gilt natürlich auch für einen Defaultkonstruktor mit throws (catched Ex), da dann zwingend entweder eine Fehlerbehandlung oder ein weiteres throw "geschehen muss".
Wenn ich jetzt in einem Objekt der Klasse B die Methode mX aufrufe, wird leider nicht die überschriebene Variante mY aus B verwendet, sondern das Original aus A. Das wundert mich sehr ...
Glaub ich dir nicht :bae:
Du wirst irgendwo einen Fehler im Code haben, wenn du willst kannst du uns die ganze Klassen reinpasten - wenn zu gross, bitte als KSKB.
Mhh eigendlich sollte es gehen, da er eigendlich überschreiben sollte, aber du kannst sicherheitshalber an der funktion in B noch folgenden Tag beifügen @Override
da es nach der Vererbung schließlich B.mX() ist, müsste dieses B.mX() auch B.mY() kennen und somit müsste es eigendlich funktionieren, weil das ja der gedanke von Vererbung und überschreiben einer Funktion ist.
ok, mein Fehler war, das mY private war und sich dann wohl nicht überschreiben lässt.
Was ist, wenn ich aus B.mZ() gezielt (!) die originale A.mY() aufrufen möchte? Iat das in Java möglich? Und wenn ja, wie ...