Lassen Sie uns nun auf einige interessante Aspekte der beiden Listings eingehen. Zunächst dürfte den C-Kenner die offensichtliche Ähnlichkeit zu seiner Lieblingssprache erfreuen. Was den Bereich Objektorientierung angeht, wird sehr oft die Verwandtschaft zu C++ betont, die allerdings keineswegs so ausgeprägt ist. Sicher verwendet Java Konzepte, die C++ Programmierern bekannt vorkommen werden. Und in der Tat "leiht" sich Java Teile der C++ Syntax. Allerdings sind die Ähnlichkeiten zwischen Java und C++ wesentlich geringer, als zwischen Java und C.
Nur stichpunktartig seien hier garbage collection und die dynamische Suche nach Methoden genannt. Interessant an Rechteck.java ist, daß innerhalb der Klassendefinition eine Methode mit dem gleichen Namen wie die Klasse, "Rechteck", existiert. Wir nennen sie Konstruktor. Die Aufgabe von Konstruktoren ist es, neu erzeugte Objekte in einen definierten Startzustand zu bringen. Wir sehen dies an den beiden Zuweisungen l = l und b = b. Bleiben wir noch kurz bei l = l, ein auf den ersten Blick merkwürdig aussehender Ausdruck. Allerdings darf man sich nicht von den gleichen Namen verwirren lassen, das eine l ist Parameter des Konstruktors, das zweite bezeichnet eine Instanzvariable - Sie erinnern sich? Ersetzen Sie doch einmal das public vor dem l durch ein static, übersetzen Rechteck.java neu, und starten RechteckTest. Durch die Änderung haben Sie l zu einer Klassenvariable gemacht - der Effekt ist offensichtlich. Woran aber erkennt der Compiler, was gemeint ist, wenn zwei Variablen den gleichen Bezeichner haben? Der Schlüssel liegt in dem unscheinbaren "this". Es spezifiziert das Objekt, durch welches die Methode (unser Konstruktor) aufgerufen wird. Bleiben wir noch kurz bei Konstruktoren. Es fällt auf, daß wir keinen Typ für den Rückgabewert angegeben haben. Dies heißt nun nicht, daß solche Methoden keinen Rückgabewert liefern. Vielmehr wird implizit das "this" Objekt zurückgegeben. Beachten Sie bitte, daß Konstruktoren kein explizites "return" enthalten sollten.
JAVA - 8 / 10

|