zur vorherigen Seite   zum Inhaltsverzeichnis   zur nächsten Seite

Antwort:

Es sieht zwar so aus als ob der Standardkonstruktor nichts macht, aber die Antwort ist nein.

Die Arbeit hinter den Kulissen

Der Standardkonstruktor macht, wenn er verwendet wird, eine ganze Menge "hinter den Kulissen". Er arbeitet mit dem Betriebssystem, um Hauptspeicher für das Objekt zu finden, den Speicher für das Objekt einzurichten, stellt die Variablen und die in der Klassendefinition spezifizierten Methoden hinein und gibt eine Objektreferenz zurück. All das ist ganz schön kompliziert, und wir haben Glück, dass wir es nicht schreiben müssen.

Wir müssen nur dann einen eigenen Konstruktor in die Klassendefinition aufnehmen, wenn wir Variablen initialisieren müssen. Das kann natürlich nicht automatisch geschehen, da der Compiler nicht wissen kann wie wir Ihre Variablen initialisieren möchten.

Alles was wir tun müssen, um einer Klassendefinition einen Konstruktor hinzufügen, ist die Anweisungen zu schreiben, die die Variablen initialisieren.

Der Konstruktor macht immer noch die ganze Arbeit, "hinter den Kulissen".

Syntaxregel: Wenn wir Konstruktoren für eine Klasse definieren, dann sind diese die einzigen Konstruktoren, die die Klasse hat. Der Standardkonstruktor wird nur dann automatisch zur Verfügung gestellt, wenn wir keine Konstruktoren definieren.

Diese Regel macht wirklich Sinn. Wenn wir Konstruktoren für eine Klasse definieren liegt es nahe, dass wir die Kontrolle über die Vorgänge haben wollen und uns daher um alle Konstruktoren kümmern (auch gegebenfalls um einen Standardkonstruktor).

FRAGE 13:

(Designfrage: ) In unserer bisherigen Konzeption gibt jedes HalloObjekt den gleichen String auf den Bildschirm aus. Wie kann diese Klasse verbessert werden?