• Home
  • |
  • Blog
  • |
  • Java Tutorial #19 – Java Klassen

Java Tutorial #19 – Java Klassen

Zuletzt aktualisiert: Januar 23, 2024

In diesem Beitrag wirst du in Java Klassen kennenlernen. Wir werden uns dabei in der Theorie detailliert ansehen, was eine Klasse ist und wie man diese in der Praxis definiert. Außerdem werden wir das Konzept der Objektorientierung nochmal kurz auffrischen und herausfinden, wie man ein Objekt einer Klasse erzeugen kann.

Inhaltsverzeichnis

1. Wiederholung: Java Klassen und Eigenschaften

Im vorherigen Blogbeitrag hatte ich bereits erwähnt, dass es sich bei einer Klasse um einen Bauplan für ein Objekt handelt. Darüber hinaus hast du gelernt, dass man in einer Klasse die Eigenschaften bzw. Attribute für ein Objekt definieren sowie Methoden festlegen kann, die das Objekt ausführen soll.

Die Begriffe „Eigenschaften“ und „Attribute“ kann man synonym verwenden. Du kannst sie also entweder Eigenschaften oder Attribute nennen. Wichtig ist lediglich, dass du ihren Sinn und ihre Bedeutung verstehst.

Da eine Klasse einen Bauplan vorgibt, können wir darüber Eigenschaften festlegen, die ein Objekt besitzen soll. Zum Beispiel dessen Farbe, Marke, Name oder Alter. Also die Daten, die das Objekt beschreiben.

2. Methoden in Java

Daneben gibt es Methoden, die in der Klasse definiert und von einem Objekt ausgeführt werden können. Methoden statten Objekte also mit Funktionalitäten aus, wodurch es den Objekten ermöglicht wird, zu handeln.

3. Wofür brauchen wir Objekte?

Mit der Klassendefinition allein können wir in der Praxis noch nichts anfangen.

Wenn man mit der Klasse arbeiten möchte, muss man deshalb zunächst ein Objekt davon erzeugen

Dabei können wir von einer Klasse nicht nur ein einziges Objekt erstellen, sondern beliebig viele. Das liegt daran, dass unsere Klasse tatsächlich als mehrfach verwendbarer Bauplan dient.

Jedes Objekt besitzt dabei eigene Attribute und Methoden, die es selbstständig ausführen kann. Wenn wir also beispielsweise drei Objekte einer Klasse Auto erzeugen, ist jedes einzelne Objekt mit eigenen Attributen ausgestattet und kann seine eigenen Methoden ausführen.

So viel zur Theorie. Um das Thema besser verstehen zu können, sehen wir es uns nun mal in der Praxis in unserer Entwicklungsumgebung an.

4. In Java Klassen definieren

Zuerst werden wir hierfür eine Klasse definieren. In Java gibt es die gängige Konvention, jede Klasse eines Programms in ein eigenes File zu schreiben.

Auf dem Bildschirm sehen wir das File Program.java. Dieses enthält bereits die Klasse „Program“:

Man schreibt in Java Klassen in eigene Files

Ein neues File anlegen

Wenn wir jetzt also eine zusätzliche Klasse erstellen möchten, müssen wir zunächst ein neues File anlegen. Hierzu bewegen wir uns in Eclipse links in den Package-Explorer auf das jeweilige Package. Wir klicken auf „default package“, setzen dann einen Rechtsklick darauf, wählen „New“ aus und klicken anschließend auf „Class“:

So werden in Java Klassen erstellt

Auf diesem Fenster können wir nun verschiedene Daten einstellen. Das ist für uns an dieser Stelle allerdings nicht von Bedeutung, weshalb wir lediglich einen Namen eingeben und ein Auto mithilfe dieser Klasse modellieren werden. Dementsprechend nennen wir die Klasse „Car“:

Wir nennen unsere Klasse "Car"
Wichtig:
Den Anfangsbuchstaben von Klassen schreibt man immer groß. Durch diese Konvention lässt sich später im Programm sofort erkennen, wobei es sich um eine Klasse handelt.

Abschließend klicken wir auf den „Finish“-Button und sehen dann ein neues File in einem separaten Tab geöffnet. Wir können nun zwischen den Tabs hin- und herwechseln und auch im Package-Explorer sehen wir nun zwei Files:

Car.java und Program.java.

Wir sehen nun zwei Java Klassen in zwei unterschiedlichen Files
Auch im Package-Explorer sind die Klassen zu sehen

Hier hat uns das Programm jetzt schon automatisiert eine Klasse definiert, was durch die Wörter „public class Car“ herbeigeführt wurde. Doch wofür stehen diese Wörter?

Die Schlüsselwörter public und class

Man schreibt zum einen public, gefolgt von dem Schlüsselwort class und vom Namen der Klasse. Danach kommt ein Block. Der Code, den wir in diesen Block schreiben, ist der Inhalt der Klasse.

Das Schlüsselwort public ist ein Sichtbarkeitsmodifizierer. Was diese Sichtbarkeitsmodifizierer bewirken, werden wir uns noch ansehen. Am besten merkst du dir an dieser Stelle, zuerst „public“ und anschließend „class“ zu schreiben. Letzteres verwenden wir, weil wir eine Klasse definieren. Das ist also selbsterklärend.

5. Eigenschaften in Klassen definieren

Ich hatte bereits erwähnt, dass es in Klassen sowohl Attribute bzw. Eigenschaften als auch Methoden gibt. Jetzt werden wir ein Auto modellieren, das bekanntermaßen verschiedene Eigenschaften besitzt. Wir schreiben nun beispielhaft folgendes:

private

Bei private handelt es sich wieder um einen Sichtbarkeitsmodifizierer, auf den wir ebenfalls später noch eingehen werden.

Jetzt definieren wir eine ganz normale Variable. Dafür schreiben wir „String“ und nennen diese „color“, um darin beispielsweise eine Farbe zu speichern.

private String color;

Anschließend legen wir ein weiteres Attribut an, das wir „brand“ nennen, um darin die Marke des Autos zu speichern:

private String brand;

Zu guter Letzt erstellen wir ein Attribut namens „horsePower“ mit dem Datentyp Integer, in welchem wir die PS-Zahl speichern werden.

private int horsePower; 

Natürlich könnten wir noch weitere Attribute festlegen, um unser Auto noch genauer zu beschreiben. Das hängt ganz davon ab, welche Daten wir generell von dem jeweiligen Auto benötigen.

6. Methoden definieren

Neben den Attributen gibt es innerhalb der Java Klassen noch die Methoden. Eine Methode könnte beispielsweise drive() sein:

public void drive()

Zur Veranschaulichung definiere ich diese Methode direkt:

public void drive() {
        System.out.println("Das Auto fährt…");
}

In einem anderen Beitrag dieser Tutorial-Reihe haben wir bereits gelernt, was eine Methode ist. In diesem Artikel gibt es nun die Besonderheit, dass wir die Methode mitten in der Klasse definieren und das Schlüsselwort static fehlt:

public static void drive()

Das liegt daran, dass es sich hierbei nicht um eine statische Methode handelt. Was das bedeutet, wirst du ebenfalls später lernen. Abgesehen davon setzt sich der Aufbau der Methode so zusammen, wie wir ihn bereits kennen:

public
Der Sichtbarkeitsmodifizierer public, auf den wir noch eingehen werden.

void
Der Rückgabetyp void, der darauf hinweist, dass nichts zurückgegeben wird.

drive()
Der Name der Methode.

Danach folgt der Block, in dem etwas passieren soll. In unserem Fall wird darin lediglich der Satz „Das Auto fährt …“ auf der Konsole ausgegeben.

Wir haben damit eine komplette Klasse mit Attributen und einer Methode definiert:

So können in Java Klassen aussehen

7. So erzeugt man Objekte von Java Klassen

Jetzt möchten wir mit dieser Klasse natürlich auch etwas anfangen. Nach wie vor startet unser Programm in der Main-Methode und führt deren gesamten Code von oben nach unten aus. Beim Starten des Programms sehen wir, dass trotz dieser Klasse erst mal gar nichts passiert.

Das liegt daran, dass unsere Klasse, wie bereits erwähnt, nur ein Bauplan ist, mit welchem wir allein nichts anfangen können.

Erst müssen wir ein Objekt dieser Klasse erstellen und diesen Vorgang bezeichnet man auch als Instanziierung.

Die Begriffe Instanz und Objekt kann man synonym verwenden. Um nun ein Objekt der Klasse Car zu erstellen, schreiben wir im Code folgendes:

public static void main(String[] args) {
       Car car1 = new Car();

Mit der obenstehenden Zeile haben wir ein Objekt der Klasse Car erzeugt. Sehen wir uns nun mal an, was hier genau passiert ist.

Car car1 = new Car();

Im vorderen markierten Bereich der Zeile legen wir eine Variable an, in der wir das Objekt vom Typ Car speichern werden.

Das Objekt ist vom Typ Car, was bedeutet, dass Klassen und so wie wir sie benennen, eigene Datentypen repräsentieren.

Es handelt sich dabei allerdings nicht mehr um primitive Datentypen wie etwa Integer oder String, sondern um komplexere Datentypen, die sich aus verschiedenen Komponenten zusammensetzen.

Im Fall unseres Beispiels heißt der Typ Car und die Variable, in der das Objekt gespeichert ist, nennen wir car1. Das Objekt wird jetzt mithilfe des sogenannten new-Operators erzeugt.

Dabei handelt es sich um ein weiteres Schlüsselwort, das du dir merken solltest. Wir schreiben also new, gefolgt vom Namen der Klasse, von der wir ein Objekt erzeugen möchten und einem runden Klammerpaar.

Hierbei haben wir es mit dem sogenannten Konstruktoraufruf zu tun:

Car car1 = new Car();

Der Konstruktor konstruiert sozusagen die Klasse und erzeugt davon ein Objekt. Darauf werden wir in einem gesonderten Artikel noch genauer eingehen.

In diesem Blogbeitrag ist einfach nur wichtig, dass du verstehst, wie man eine Klasse definiert.

8. Zusammenfassung

Zusammengefasst haben wir die Möglichkeit einer Klasse Attribute sowie Methoden mitzugeben und ohne ein Objekt bzw. eine Instanz der Klasse können wir mit dieser allein erst mal nichts anfangen.

Ein Objekt erzeugt man, indem man das Schlüsselwort new und anschließend den Namen der Klasse schreibt sowie ein rundes Klammerpaar dahinter setzt. Das Ganze wird dann in einer Variable gespeichert, die (in unserem Beispiel) vom Typ Car ist:

Car car1 = new Car();

Damit sind wir am Ende des heutigen Beitrags angekommen. Bisher haben wir noch nicht wirklich mit unserer Klasse gearbeitet, was daran liegt, dass uns noch etwas Grundwissen dazu fehlt. Dieses wirst du in den kommenden Beiträgen lernen.