zum Inhalt springen

Eine erste Klasse

Um ein neues Projekt anzulegen, führen Sie zunächst die im entsprechenden Tutorial beschriebenen Schritte aus. Danach haben Sie ein neues Projekt erstellt, in dem nun eine neue Klasse angelegt werden kann:

  • Aktivieren Sie das neue Projekt im "Package Explorer" mit einem Mausklick, drücken Sie dann die rechte Maustaste und wählen Sie den Punkt "New class":
  • Geben Sie als Namen der Klasse "Hund" ein, entfernen Sie ggfs. den Haken beim Punkt "public static void main(String[ erzeugen] argv) und bestätigen Sie den Dialog mit "Finish".
  • Im Editor-Bereich von Eclipse öffnet sich nun ein neues Fenster, in dem folgender Text zu sehen ist:

Die Definition einer Klasse

Was bedeutet das? Das Wort "public" können Sie zunächst einmal ignorieren und sogar löschen - im Augenblick hat es keine Bedeutung für Sie. Damit steht dort sogar nur noch dies:

class ist - ebenso wie public - ein Schlüsselwort in Java, weshalb Eclipse es farblich hervorhebt. Schlüsselwörter sind Wörter, die eine besondere Bedeutung für den Compiler haben, der Ihren Code ja noch in ein Programm übersetzen muss - deshalb dürfen Sie Schlüsselwörter auch nur an bestimmten Stellen benutzen, sonst würden Sie den Compiler verwirren. Das Schlüsselwort class legt fest, dass nun eine Klasse definiert werden wird, und der Name der Klasse, die definiert werden soll, muss dem Schlüsselwort folgen, was hier ja auch geschieht. Das alleine genügt jedoch noch nicht - der Compiler muss noch wissen, wo die Definition der Klasse beginnt und wo sie endet. Dies wird mit den geschweiften Klammern festgelegt.

Die Definition einer Methode

Sie haben nun also die Klasse Hund definiert, aber Ihre Definition von Hund hat weder Eigenschaften (Attribute) noch Fähigkeiten (Methoden) - das sollten Sie schnell ändern.

Erweitern Sie deshalb die Klasse wie folgt:

Nun haben Sie Ihre erste Methode geschrieben, und Ihre Definition eines Hundes hat die Fähigkeit, bellen zu können (auch wenn in dieser Methode noch nichts passiert). Und erneut haben Sie ein Schlüsselwort benutzt: void. void bedeutet übersetzt "leer" oder "nichtig" - was soll das? Zwar scheint die Methode belle() wirklich etwas nichtig zu sein, aber dies unbedingt davor zu schreiben ist doch etwas lächerlich.

Und in der Tat geht es um etwas anderes (auf das wir später näher eingehen werden): Methoden sollen prinzipiell auch dazu in der Lage sein, ein Objekt zurückgeben zu können. Wenn Sie irgendwann einmal die Methode holeStoeckchen() für die Klasse Hund implementieren wollen, dann soll diese Methode natürlich auch ein Stock-Objekt zurückgeben. Im Augenblick aber interessieren wir uns nicht für Methoden mit Rückgabewerten, und um dies dem Compiler zu Verstehen zu geben, wird das Schlüsselwort void benutzt (die Methode holeStoeckchen() würde als "Stock holeStoeckchen()" definiert - das Objekt würde also einfach an Stelle des Schlüsselworts void geschrieben. Aber wie gesagt: Das kommt später noch).

Auch hier fallen wieder die geschweiften Klammern auf - und so wie bei der Definition der Klasse markieren sie Anfang und Ende der Definition der Methode bzw. den sog. Methodenkörper, der in diesem Fall wieder leer ist. Allerdings ist der Definitionsbereich der Klasse Hund nicht mehr leer - vielmehr ist die belle()-Methode innerhalb dieses Bereichs eingefügt worden! Dies bedeutet, dass die Methode zu der Klasse Hund gehört - eine Definition außerhalb der Klasse wäre nicht möglich.

Zu klären bleibt noch die Bedeutung der beiden runden Klammern nach dem Methodennamen. Diese gehören zwingend zur Kennzeichnung einer Methode und müssen immer nach einem Methodennamen eingefügt werden. Sehr bald werden Sie erfahren, was man noch alles zwischen diese Klammern schreiben kann, im Augenblick spielt dies jedoch noch keine Rolle.

Stattdessen soll die Methode belle() noch etwas Inhalt bekommen - erweitern Sie sie bitte wie folgt:

Damit geben Sie die Anweisung, dass dann, wenn die Methode belle() aufgerufen wird, die Ausgabe "Wau!" erscheinen soll. Ich gebe zu, dass ein echtes Bellen schöner wäre, aber dies ist noch etwas aufwändig. Auf die genaue Syntax der Anweisung System.out.println werden wir später eingehen - beachten Sie hier nur Folgendes

  • Am Ende der Anweisung steht ein Semikolon - das ist sehr, sehr wichtig, denn es legt das Ende der Anweisung fest. Weil Anweisungen in Java über mehrere Zeilen gehen können, kann der Compiler nicht ohne weiteres entscheiden, wo eine Anweisung aufhört und braucht daher Ihre Hilfe. Wenn das Semikolon dort nicht auftauchen würde, dann würde der Compiler auch noch die beiden geschweiften Klammern in den folgenden Zeilen als Teil der Anweisung interpretieren, die Anweisung nicht verstehen und Ihnen als Zeichen seiner Hilfslosigkeit folgende Meldung zeigen: Syntax error, insert ";" to complete BlockStatements
  • Betrachten Sie die runden Klammern nach println - vielleicht erinnern Sie diese an etwas? Richtig - es ist die gleiche Syntax wie bei der Definition der Methode belle() - und tatsächlich handelt es sich hier wieder um eine Methode, die jedoch diesmal nicht definiert, sondern aufgerufen wird (Weshalb es nach println() auch keine geschweiften Klammern gibt).

Die Definition eines Attributs

Zu guter Letzt soll die Klasse Hund noch eine Eigenschaft bekommen: Jede Instanz von Hund soll, wie es in der Realität ja auch der Fall ist, ein Geburtsjahr haben. Erweitern Sie die Klasse Hund daher noch einmal:

Nun haben Sie der Klasse Hund das Attribut geburtsJahr hinzugefügt. Da ein Geburtsjahr eine Zahl ist, haben Sie dies auch so definiert: Als ein Objekt der Klasse Integer (engl. für Ganzzahl).

Die Klasse Integer ist eine Klasse, die Sie nicht selbst programmiert haben (und auch nicht selber programmieren müssen). Für häufig benötigte Datentypen - wie Zahlen oder Zeichenketten und noch viele mehr - bietet Java eine Bibliothek mit Klassen, die Sie ohne weiteres in Ihren Programmen benutzen dürfen. Da diese Bibliothek auf jedem Computer vorhanden ist, auf dem die Java Virtual Machine installiert wurde, können Sie sicher sein, dass Ihr Programm auch auf anderen Rechnern funktioniert. Gleichzeitig wird Ihnen viel Arbeit abgenommen, so dass Sie sich um das eigentliche Problem kümmern können, ohne sich mit langweiligen Details beschäftigen zu müssen.

*