OOP und Initialisierung

alfware17

Aktives Mitglied
Hallo und im Voraus sorry, falls ich zum 269.mal eine dumme Anfängerfrage stelle -
aber ich fand gerade trotz Google-Recherche nichts zu meinem speziellen Vererbungsproblem.
Also ich habe eine Klasse erstellt, die sucht auf meinem Windowsverzeichnis nach einer speziellen
SQLite-Datenbank und macht entweder den Connect oder legt sie an. Dazu enthalten private Variablen
nach dem Create z.B. den Datenbanknamen (File) und die bevorzugten Pfade (Eigene Dateien usw).
Da ich diese Sache sowohl online als auch im Batch brauche, bei letzterem aber noch mehr dazu kommt,
z.B. Konsolenausgaben, Liste usw., habe ich mir gedacht aus Wartungsgründen, mache ich nicht 2 gleiche zu pflegende Klassen sondern vererbe das, also die Batch als Nachfolger des Online.
Soweit so gut. Leider stellt die abgeleitete Klasse in ihrem Create dann fest, daß die Variablen, die eigentlich
durch die Hauptklasse initialisiert worden sein sollten, leer sind. :-((
Bitte nicht lachen, aber was mache ich falsch? Sollten die Variablen public sein? Sehen kann ich sie ja im Debugger, also müßten sie bei der Vererbung mit rüber gekommen sein, nur daß sie eben leer sind. Getter aus der Hauptklasse in der abgeleiteten Klasse aufrufen? Eigentlich wollte ich mich ja darauf verlassen, daß alles,
was mein Hauptklassen-Create gemacht hat, dann in der abgeleiteten Klasse schon "da" ist, also sprich die Pfade und Dateinamen bekannt. Und wenn ich dann mein Datenbank-Connect aufrufe, rufe ich welches? Das meiner Hauptklasse, wo die Variablen ja gefüllt sein sollten oder die geerbte (habe nichts überladen, nur neue
Methoden und Variablen hinzugefügt in der abgeleiteten Klasse)
 
Ohne da den Code zu sehen, kann man nur sagen, dass wahrscheinlich irgendwas falsch ist...
Oh pardon, schon gefunden. Ich habe den falschen Konstruktor aufgerufen. "super" mußte es sein. Und schon ist die abgeleitete Klasse schlau und weiß die Pfade 🙂 Mist, den Fehler habe ich vor Jahren in Delphi auch schon mal gemacht, damals "inherited" statt name.create und schon sah es ganz anders aus.
Danke mrBrown - kaum macht man es richtig, schon klappt es.
 
Wie kannst du in der Sub-Klasse den super-Konstruktor nicht aufrufen? 😵 Das wird mindestens implizit gemacht...
Ich habe leider mehrere Konstruktoren, mit und ohne Parameter. Kann nicht mehr nachvollziehen, welchen er sich da holte. Soll auch keine Entschuldigung sein, aber Java kann ich mindestens genauso schlecht 😕 wie Delphi und da kommt man schon mal durcheinander 🙄
 

Neue Themen


Zurück
Oben