Welchen Zweck erfüllt der new-Operator?
new
Ein neues Objekt zu einer gegebenen Klasse zu erzeugen.
Was wird beim Aufruf des new-Operators tatsächlich ausgeführt?
Der Standard-Konstruktor wird aufgerufen
Was gibt der Standard-Konstruktor als Ergebnis zurück?
Das erzeugte Objekt.
Was ist der Standard-Konstruktor (Definition)?
Eine spezielle Methode zur Erzeugung von Objekten einer Klasse; man kann ihn sich wie eine spezielle Art von Methode vorstellen, die es nur einmal pro Klasse geben darf.
Nenne die 4 Regeln für die Definition eines Standard-Konstruktors.
1) Name muss immer mit dem Klassennamen übereinstimmen, 2) besitzt keinen Rückgabetyp, 3) Sichtbarkeit sollte immer public sein, 4) besitzt keine Parameter.
public
Warum sollte die Sichtbarkeit des Standard-Konstruktors immer public sein?
Damit andere Klassen ein Objekt dieser Klasse per new-Operator erzeugen können.
Nenne die 2 typischen Aufgaben, die der Standard-Konstruktor im Regelfall erfüllt.
1) Anpassen der Defaultwerte für primitive Datentypen, 2) Erzeugung von nicht-primitiven Attributen (Objekten).
Was passiert, wenn für eine Klasse kein Standard-Konstruktor definiert wird?
Die Definition ist nicht erforderlich und kann weggelassen werden; der Java-Compiler fügt implizit einen leeren Standard-Konstruktor hinzu.
Ist ein implizit hinzugefügter leerer Standard-Konstruktor im Quelltext sichtbar, und kann er trotzdem verwendet werden?
Er ist nicht im Quelltext sichtbar, kann aber trotzdem mit dem new-Operator aufgerufen werden und ein Objekt erzeugen.
Was passiert mit nicht mehr benötigten Objekten in Java automatisch?
Sie werden von der Java-Laufzeitumgebung automatisch gelöscht.
Wie werden dieses Konzept und dieser Vorgang bezeichnet?
Garbage Collection (auch: automatische Speicherverwaltung).
Worin unterscheidet sich Java bezüglich der Speicherverwaltung von Sprachen wie C/C++ oder Objective-C?
In Java ist es normalerweise nicht nötig, Objekte durch eine Programmanweisung explizit zu zerstören – das übernimmt die automatische Speicherverwaltung.
Mit welcher Anweisung kann der Garbage Collector bei Bedarf dennoch aufgerufen werden?
System.gc()
Warum reicht ein Standard-Konstruktor ohne Parameter nicht aus, um z. B. den Mindestbestellwert eines Kunden individuell mit unterschiedlichen Werten zu belegen?
Der Standard-Konstruktor besitzt per Definition keine Parameter – er kann also beim Aufruf keine von außen übergebenen, individuellen Werte entgegennehmen. Er kann nur feste Defaultwerte setzen (z. B. Mindestbestellwert immer auf 10 EUR) oder feste nicht-primitive Attribute initialisieren, aber keine zur Laufzeit variierenden Werte übernehmen. Für individuelle Werte werden überladene Konstruktoren mit Parametern benötigt (7.2)
Warum ist es sinnvoll, dass Java Objekte automatisch per Garbage Collection löscht, statt dies dem Entwickler zu überlassen?
Manuelle Speicherverwaltung (wie in C/C++) ist fehleranfällig – vergisst der Entwickler, ein Objekt freizugeben, entstehen Speicherlecks; gibt er es zu früh frei, kann das Programm abstürzen. Die automatische Speicherverwaltung übernimmt diese Aufgabe zuverlässig im Hintergrund und reduziert dadurch eine ganze Klasse von möglichen Programmierfehlern.
Erkläre am Beispiel der Klasse "Kunde" mit dem Attribut mindestbestellwert und dem Attribut warenkorb, welche zwei Aufgaben der Standard-Konstruktor dort übernimmt.
mindestbestellwert
warenkorb
Erstens passt der Standard-Konstruktor den Defaultwert des primitiven Attributs mindestbestellwert an – statt des Java-Standardwerts 0 wird er direkt auf 10 EUR gesetzt. Zweitens erzeugt der Standard-Konstruktor für das nicht-primitive Attribut warenkorb (ein Objekt vom Typ Warenkorb) direkt ein neues, leeres Warenkorb-Objekt, sodass jeder neu erzeugte Kunde sofort über einen initialisierten, leeren Warenkorb verfügt statt über null.
Warenkorb
null
Erklären Sie den Standard-Konstruktor in Java: seine Definition, seine Aufgaben und was passiert, wenn keiner definiert wird.
Der Standard-Konstruktor ist eine spezielle Methode zur Erzeugung von Objekten einer Klasse, die durch den new-Operator aufgerufen wird und das erzeugte Objekt zurückgibt. Es darf nur einen Standard-Konstruktor pro Klasse geben; sein Name muss mit dem Klassennamen übereinstimmen, er besitzt keinen Rückgabetyp, keine Parameter und sollte die Sichtbarkeit public haben, damit andere Klassen per new Objekte erzeugen können. Im Regelfall übernimmt er zwei Aufgaben: das Anpassen von Defaultwerten primitiver Attribute und die Erzeugung (Initialisierung) nicht-primitiver Attribute. Werden diese Aufgaben für eine Klasse nicht benötigt, kann der Standard-Konstruktor weggelassen werden – der Compiler fügt dann implizit einen leeren, im Quelltext nicht sichtbaren Standard-Konstruktor hinzu, der trotzdem per new aufrufbar ist. Nicht mehr benötigte Objekte werden in Java automatisch durch die Garbage Collection gelöscht, sodass eine explizite Zerstörung von Objekten wie in C/C++ normalerweise nicht nötig ist.
Zuletzt geändertvor 17 Tagen