In diesem Beitrag behandeln wir Klassen und deren Instanzen (Objekte).
Wie wir in dem Artikel Einführung in die objektorientierte Programmierung erfahren haben, sind Klassen die Baupläne nach denen Objekte (Instanzen von Klassen) modelliert werden.
Diese Unterscheidung zwischen Klasse und Objekt nennt man Abstraktion.
Aufbau einer Klasse in Java
Schauen wir uns zunächst einmal den Aufbau einer einfachen Klasse in Java an:
public class Schaf { public String name; public byte alter; public float wollMenge; }
In dem oberen Quellcode-Beispiel ist die Klassendefinition der Klasse Schaf aufgeführt. Jede Klassendefinition beginnt mit dem class-Schlüsselwort. Die eigentliche Definition der Klasse, die Angabe der Variablen- und Methodendefinitionen, wird innerhalb der geschweiften Klammern vorgenommen.
Die Schaf-Klasse enthält keine Methoden und besteht nur aus den drei Variablen name
, alter
und wollMenge
.
Hinweis: Das Verbunddatentyp-Konzept der Programmiersprache C entspricht einer methodenlosen Klasse in Java, wie in dem oberen Quellcode-Beispiel dargestellt. In C bezeichnet man dies als struct.
Die drei Variablen der Klasse Schaf werden als Attribute oder Instanzvariablen bezeichnet. Aber auch die Begriffe Membervariablen und Instanzmerkmale werden oft für sie verwendet.
Erzeugen eines Objekts in Java
Objekte sind Instanzen von Klassen, sie werden mit Hilfe des new-Operator erzeugt. Dabei wird zuerst eine Variable vom Typ der Klasse deklariert. Dieser Variablen wird dann das erzeugte Objekt zugewiesen.
Diese beiden Schritte, die Deklaration und Initialisierung, können einzeln oder auch zusammen erfolgen, siehe folgendes Quellcode-Beispiel:
Schaf schafObjekt; schafObjekt = new Schaf(); Schaf schafObjekt = new Schaf();
Bei der Deklaration Schaf schafObjekt;
wird der Typname der selbstdefinierten Klasse vor dem Variablen-Namen der Objektvariable angegeben. Die Objektvariable wird als Referenz gespeichert.
Bei der Initialisierung schafObjekt = new Schaf();
wird der Objektvariablen schafObjekt eine Instanz der Klasse Schaf zugewiesen. Die Instanz der Klasse Schaf (Objekt vom Typ Schaf) wird dabei mit Hilfe des new-Operators erzeugt.
Hinweis: Klassen werden in Java mit Hilfe des new-Operators instanziert. Es gibt nur zwei Ausnahmen bei denen die Instanzierung mit Literalen anstelle des new-Operators erfolgen kann. Bei Strings und Arrays können Objekte mit Literalen direkt erzeugt werden, zum Beispiel String a = "Hello PLHQ!";
oder int[] b = {1, 2, 3};
.
Das neu erzeugte Objekt schafObjekt besitzt selbst drei Variablen (name, alter, wollMenge), diese enthalten direkt nach der Initialisierung die Standardwerte, siehe den Beitrag Datentypenarten in Java und ihre Verwendung. Bei Referenztypen (Objektvariablen) ist der Standardwert null.
Beispielanwendung einer Klasse mit einem Objekt in Java
In der folgenden Beispielanwendung wird die Klasse Schaf definiert und eine Instanz dieser Klasse erzeugt. Anschließend werden den drei Instanzvariablen Werte zugewiesen.
Der Schreibzugriff (Zuweisen von Werten) erfolgt dabei mittels Punktnotation:
schafObjekt.name = "Othello";
.
Am Ende der Anwendung werden die Werte der drei Instanzvariablen auf der Kommandozeile ausgegeben. Dazu wird lesend auf die Attribute zugegriffen.
Der Lesezugriff erfolgt wieder mittels Punktnotation:
System.out.println("\nName : " + schafObjekt.name);
.
Beispielanwendung die Klasse Schaf und ein Objekt.
/* * Beispielanwendung die Klasse Schaf und ein Objekt */ public class Schaf{ // Deklaration der Instanzvariablen (Membervariablen, Instanzmerkmale) public String name; public byte alter; public float wollMenge; public static void main(String[] args) { // Deklaration und Initialisierung der Objektvariable schafObjekt Schaf schafObjekt = new Schaf(); // Den Instanzvariablen werden Werte zugewiesen (Schreibzugriff) schafObjekt.name = "Othello"; schafObjekt.alter = 7; schafObjekt.wollMenge = 2.153f; // Ausgabe der Inhalte der Instanzvariablen (Lesezugriff) System.out.println("\nName : " + schafObjekt.name); System.out.println("Alter : " + schafObjekt.alter + " Jahre"); System.out.println("Wollmenge : " + schafObjekt.wollMenge + " m^2"); } }
Starten wir nun die Anwendung. In der folgenden Abbildung ist die Kommandozeilenausgabe der Beispielanwendung darstellt:
Comments 12
gut erklärt.
Sehr klar und verständlich. Alles gut nachvollziehbar.
sehr gut
selten so ein verständlichen Artikel gelesen, sehr gut und weiter so!!!
Super Erklärung!
Sehr gut erklärt !!!
sehr gut erklär . ¡¡¡¡
Ich bin gerade dabei, mir das Programmieren mit Java beizubringen. Ich stecke so ein bisschen bei Klassen und Objekten fest, weil es mir schwer fällt, diese mir richtig einzuprägen bzw. zu verstehen. Ich versuche mir von dieser Seite ein wenig helfen zu lassen und beim ersten durchlesen war es schon verständlicher, wobei ich noch in dem Buch etwas zu return-Anweisungen stehen habe, die ich auch noch verstehen muss. Aber ich bin guter Dinge. Danke vorerst!
Grüße, Marcus
Coole Seite! Alles verständlich erklärt, macht weiter so.
Dankeschön! Superleicht erklärt!
Author
Hallo Fabian,
freut mich sehr zu hören!
Viele Grüße, Chris
Pingback: Klassen in Java: Die Grundlagen der objektorientierten Programmierung