Skip to main content

So kannst du Java Objekte bzw. Instanzen einer Klasse erstellen


java objekte instanzen einer klasse erstellen

Lass uns jetzt ein paar Java Objekte erstellen.
Im letzten Beitrag habe ich dir gezeigt, was nötig ist um ein Java Programm überhaupt zu starten.

Ich habe dir gezeigt, wie du eine zweite Klasse anlegst und die main Methode implementierst.

Du hast gesehen, dass die Anweisung, welche wir in die main Methode geschrieben haben, völlig willkürlich sein kann.

Diese Anweisung hatte also nichts mit unserer Java – Objekt- Klasse zu tun.

In diesem Beitrag möchte ich dir zeigen, wie du nun endlich „Menschobjekte“ erzeugen kannst.

Außerdem möchte ich dir zeigen, wie du auf Instanzvariablen zugreifen kannst.

Und ich werde dir den großen Vorteil der objektorientierten Programmierung zeigen.

Von der Java Klasse zum Java Objekt

Unser bisheriger Code zur „Human-Klasse“ sieht so aus:

public class Human {
int size=156;//size in centimeter


void grow(int growthRate){
size=size+growthRate;
}
}


Unser bisheriger Code zur „ProgrammStart-Klasse“ sieht so aus:

public class ProgrammStart {
public static void main (String [] args){

}
}

Ein Java Objekt wird immer durch einen Konstruktor erschaffen.

Und so einen Konstruktor legen wir jetzt innerhalb der main Methode einmal an.


public class ProgrammStart {
public static void main (String [] args){

new Human();
}
}

Das Keywort „new“ weist daraufhin, dass hier ein neues Objekt geschaffen werden soll.

Der Name des Konstruktors ist „Human“.
Dieser muss dem Klassennamen des zukünftigen Objektes entsprechen.

Dann erfolgt die Parameterliste. Diese ist zu diesem Zeitpunkt leer.

Hinter jeder Anweisung kommt ein Semikolon.

Zu diesem Zeitpunkt haben wir ein Objekt aus der Klasse Human geschaffen.

Wir können aber noch nicht auf dieses Objekt zugreifen.

Wir müssen, wie bei einer Instanzvariablen einen Speicherort für dieses Objekt angeben.

Und genau wie bei der Deklaration einer Instanzvariablen melden wir einen Datentyp und einen Namen für das Objekt an.


public class ProgrammStart {
public static void main (String [] args){

Human mathias;
new Human();
}
}

Da „mathias“ der Name einer Variablen ist, wird dieser laut Namenskonvention wieder klein geschrieben.
Falls ich den Namen Mathias Mücke gewählt hätte, müsste dieser nach bestehender Namenskonvention mathiasMücke sein.

Jetzt erfolgt die Zuweisung. Wir haben eine Variable im Hauptspeicher, namens mathias angelegt und dafür einen Speicher vom Datentyp „Human“ reserviert.

Und die Zuweisung ist jetzt der Konstruktor.


public class ProgrammStart {
public static void main (String [] args){

Human mathias;
mathias=new Human();
}
}

Oder es ist vielleicht besser und einfacher, das Ganze in einem Zug zu vollziehen.


public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
}
}

Was ist bis jetzt passiert?
Lies von rechts nach links.

Du hast ein Objekt angelegt.
Diesem Objekt hast du den Namen „mathias“ gegeben.
Und du hast diesem Objekt einen Speicherplatz in Höhe einer Human-Variablen zugewiesen.

Mehr ist bisher nicht passiert.

Java-Programm-starten-Human

Wenn du jetzt auf „Run“ klickst, passiert gar nichts. Du hast lediglich das Objekt angelegt. Du hast aber noch keine Anweisung geschrieben, was jetzt mit dem Objekt passieren soll.

Und diese Anweisung schreiben wir jetzt.

Du kannst jetzt auf das Objekt „mathias“ zugreifen.

Wir haben eine Instanzvariable „size“ in der Klasse „Human“, welche uns die Körpergröße eines Menschen zurückgibt.

Java-Programm-Instanzvariable-zugreifen

Wir werden jetzt beim Programmstart auf die Variable des Objektes zugreifen.


Der Zugriff auf diese Variable erfolgt per Punkt-Notation.

Dazu musst du einfach den Objektnamen eingeben.
Dann den Punkt.
Zum Schluss gibst du die Variable ein, auf welche du zugreifen möchtest.

Und so am Beispiel: mathias.size

Da „mathias“ ein Objekt aus der Human-Klasse ist, kannst du nur auf Instanzvariablen aus der Klasse „Human“ zugreifen.

Und diese betten wir jetzt in unsere Konsolenausgabe ein. (System.out.println()-Anweisung)


public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
System.out.println(mathias.size);
}
}

Klicke oben auf Run und eine Konsolenausgabe wird zurückgegeben.

Eclipse Konsole-gibt-Wert-zurück

Die Zahl entspricht dem Wert, welchem du der Instanzvariable zugewiesen hast.

Du siehst, dass lediglich eine Zahl ausgegeben wird.

Das ist natürlich etwas blöd.

Lass uns die Anweisung erweitern.


public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
System.out.println("Mathias ist "+mathias.size+" Zentimeter groß");
}
}

Wir haben jetzt die Anweisung um zwei Textwerte erweitert.

Wichtig ist, dass Textwerte immer in Anführungszeichen stehen müssen.

Weiterhin wichtig ist, dass du diese Textwerte über den „+ Operator“ mit deinen Variablen verbindest.

Du fügst quasi mehrere Bildschirmausgaben zusammen zu einer.

Legen wir ein zweites Java Objekt an und es nennen es „Stefan“.


public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
System.out.println("Mathias ist "+mathias.size+" Zentimeter groß");
}
}

Stefan ist jetzt aber nicht 156 groß. Stefan ist größer.

Wir überschreiben den Wert der Instanzvariable „size“ für das Objekt Stefan.


public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
System.out.println("Mathias ist "+mathias.size+" Zentimeter groß");
}
}

Und jetzt geben wir den Wert der Instanzvariablen „size“ für das Objekt Stefan aus.


public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
System.out.println("Mathias ist "+mathias.size+" Zentimeter groß");
System.out.println("Stefan ist "+stefan.size+" Zentimeter groß");
}
}

Klicke auf „Run“ und Die Bildschirmausgabe sollte sich jetzt für Stefan anpassen.

Was ist passiert?

Du erschaffst ein Objekt und weist diesem Objekt einen Speicherplatz zu.
Und an einer anderen Stelle erschaffst du ein zweites Objekt vom selben Typ.

Beide Objekte besitzen die gleichen Eigenschaften. Sie greifen also auf die gleichen Typen von Instanzvariablen zu.

Der Unterschied besteht darin, dass du den Instanzvariablen unterschiedliche individuelle Werte zuweisen kannst.

Deine Java Objekt führen somit für jede Instanzvariable einen eigenen unterschiedlichen Wert.

Du verwaltest deine Objekte zentral und passt diese auch zentral an. Durch eine Anpassung, in der entsprechenden Klasse, verändern sich aber die Möglichkeiten für alle Objekte.

Cool oder?

Dann lass uns doch das Ganze mal zentral für alle Java Objekte anpassen.

Wie machst du das?

In der Human Klasse setzt du eine zweite Instanzvariable ein.

Code für die Klasse „Human“:

public class Human {
int size=156;//size in centimeter
String firstName;//Vorname als Textwert


void grow(int growthRate){
size=size+growthRate;
}
}

String ist ein Datentyp, welcher einen Speicherplatz für einen Textwert reserviert.

Der Name der Variablen heißt „firstName“.

Die Zuweisung brauchst du an dieser Stelle nicht machen, da wir eh die Variablen beim Programmstart überschreiben können.

Das war es schon.

Jedes deiner „Mensch“ oder „Human“ Objekte kann jetzt einen individuellen Vornamen erhalten.

Und diesen weisen wir jetzt zu.

Code der Klasse „ProgrammStart“:

public class ProgrammStart {
public static void main (String [] args){

Human mathias=new Human();
Human stefan=new Human();
stefan.size=182;
mathias.firstName="Mathias";
stefan.firstName="Stefan";
System.out.println(mathias.firstName+" ist "+mathias.size+" Zentimeter groß");
System.out.println(stefan.firstName+" ist "+stefan.size+" Zentimeter groß");
}
}

Wichtig ist, dass die Namen „Mathias“ und „Stefan“ Textwerte sind.
Und bei der Zuweisung von Textwerten, müssen diese immer Anführungsstrichen gesetzt werden.

Du siehst, dass du per Punktnotation auf das Objekt „mathias“ und auf das Objekt „stefan“ zugreifen kannst.

Und durch diese Punktnotation kannst du auch die Werte der einzelnen objektbezogenen Instanzvariablen überschreiben.
Und letztlich kannst du diese auch ausgeben lassen.

Wenn dir der Vorteil der objektorientierten Programmierung noch nicht klar sein sollte….

dann denke bitte einmal über eine andere Möglichkeit nach.

Angenommen du möchtest Mensch-Objekte namens Michael, Mathias, Stefan, Gustav und weitere hundert schaffen.

Ohne objektorientierte Programmierung müsstest du in deiner Klasse „Human“ jetzt 100 Instanzvariablen vom Typen String anlegen.
Und die nennst du jetzt vorname1, vorname2 ….. vorname100.

Und dann könntest du in verschiedenen Anweisungen auf die einzelnen Variablen zugreifen.

Im objektorientierten Kontext machst du alles nur einmal und kannst beliebig oft darauf zu greifen.

  • Somit wird die Sache richtig flexibel.
  • Du hältst den Code schön klein und übersichtlich.
  • Du musst dir nicht 100 verschiedene Variablennamen ausdenken.

Ist doch schon besser so, oder?

Zusammenfassung:

  • Objektorientierte Programmierung setzt darauf eine Klasse zu schaffen. Dieser Klasse werden Methoden und Instanzvariablen zugewiesen.
  • Und aus dieser Klasse lassen sich beliebig viele Objekte kreieren.
  • Um ein Objekt zu schaffen, benötigst du einen sogenannten Konstruktor.
  • Der Konstruktor beginnt immer mit dem Keyword new. Dieses Keyword ruft den Konstruktor auf.
  • Dann folgt der Konstruktorname. Dies ist immer der Klassenname, aus welchem das Objekt erschaffen werden soll.
  • Und dann kommt eine Parameterliste.
  • Für jedes Objekt muss Speicherplatz reserviert werden. Dies erfolgt durch eine Deklaration.
  • Du gibst den Namen des Objektes an und den Datentyp. Der Datentyp entspricht dem Klassennamen.
  • Der Name des Objektes wird klein geschrieben. Bei zusammengesetzten Namen schreibst du den Anfang klein und das zweite Wort groß.
  • Auf das Objekt und deren Instanzvariablen kannst du in Java per Punkt-Notation zugreifen.

Probier dich aus! Lege verschiedene Variablen, Klassen und Java Objekte an und kombiniere die Möglichkeiten.


Ähnliche Beiträge

So kannst du Java installieren

java-installieren

Bevor du loslegst und deine ersten Java Programme schreibst, benötigst du die entsprechende Arbeitsumgebung. Du solltest also Java installieren. Und diese Arbeitsumgebung beinhaltet dann Bibliotheken für die einzelnen Java-Standard-Klassen, Dateien um deine Programme auszuführen. Dateien um deine Programme zu packen, Logische Verzeichnisstrukturen

Syntax, Semantik und Lexikalik in der Java Programmierung

java programmierung lexikalik syntax semantik

Java ist eine Programmiersprache. Und wie jede andere Programmiersprache ist auch Java, lediglich eine künstliche Sprache.   Normalerweise bieten künstliche Projekte immer jede Menge Spielraum für Eigenkreationen. Bei der Programmierung ist dies nicht ganz so. Denn Programmiersprachen sind auch immer sehr exakt.   Jede Programmiersprache und auch jede gesprochene Sprache […]

Java Anfänger Übung: Hello World

Java-Übung-Hello-World

Alles beginnt mit „Hello World“. Sämtliche Java Bücher beginnen mit diesem ersten Beispiel. Auch die Java Übungen sollen mit diesem ersten Programm starten. Definiere eine Klasse „Hello World“. Implementiere die Main Methode. Die Main Methode soll bei Programmaufruf die Bildschirmanzeige „Hallo Welt“ zurückgeben. Die Lösung zur Java Übung „Hallo Welt“ […]

So kannst du spielend Java Programmierung lernen

java programmierung lernen

Ich lernte die Java Programmierung auf die klassische Art. Ich kaufte mir das erste Buch und los ging es. „Jetzt wirst du Java lernen“ – sagte ich zu mir. Ich war relativ schnell ziemlich frustriert, denn irgendwie fehlten mir ein paar Zusammenhänge. Kennst du das? Du hast ein Wissensfetzen und […]

Java Konsolenausgaben mit formatierten Zahlen

java programmierung konsolenausgabe mit formatierten zahlen

Java Konsolenausgaben erzeugst du mit der System.out.println()-Anweisung. Dies ist relativ einfach. Aber es ist mitunter nicht ganz praktisch. Und zwar immer dann, wenn Zahlen im Spiel sind. Die Zahlen welche dann auf deiner Java Konsole erscheinen, sind unformatiert. Sie haben zu viele Kommastellen. Oder für eine bessere Darstellung benötigst du […]

So nutzt du Methoden aus der Java String Klasse

java programmierung methoden java string klasse

In einen der letzten Beiträge haben wir darüber gesprochen, dass Java Strings – Objekte sind. Dass Strings in allen Programmen äußerst häufig vorkommen Und dass sich deshalb Referenzvariablen String-Objekte im String Pool teilen. Das Konzept hinter dem String-Pool ist die Teilung der Ressourcen. Und das bedeutet: Weniger Objekte – mehr […]

So solltest du Kommentare im Java Programm einsetzen

java programmierung kommentare

Bei der Java Programmierung sind Kommentare mitunter genauso wichtig wie der eigentliche Code. Denn ein guter Kommentar zeigt dir sofort, was mit dem Code gemeint ist, was dieser bewirkt und was sich der Entwickler dabei dachte. Wie werden Kommentare in Java gesetzt? Die Kommentare werden in Eclipse immer grün dargestellt. […]

Namenskonventionen bei der Java Programmierung

java-programmierung-namenskonvention-lowercasecamelcase

Beiderjavaprogrammierungsolltestduaufdierichtigenamensvergabeachten. indennnamengebendeinenjavaprogrammeinegrundlegendestruktur. Was sagen dir die beiden oberen Sätze? Häh? Da steht: Bei der Java Programmierung solltest du auf die richtige Namensvergabe achten. Denn Namen geben deinem Java Programm eine grundlegende Struktur. Jede Sprache braucht Regeln. Diese Regeln, wie Grammatik oder Rechtschreibung geben der Sprache eine Struktur. Jeder Leser, welcher […]

Zwei smarte Möglichkeiten eine Java Zufallszahl zu erzeugen

java zufallszahl anlegen erzeugen

Java Zufallszahl – Wieso? In der Java Programmierung benötigst du immer wieder einmal Zufallszahlen. Du möchtest deine Software mit Daten testen und dir keine Zahlen ausdenken. Du benötigst Stichproben, welche ein reales Verhalten simulieren. Du hast ein Spiel entworfen und die Akteure sollen mit zufälligen aber unterschiedlichen Größen, Rüstungsleveln usw. […]

So kannst du Instanzen in Java Klassen zählen

java programmierung instanzen in java klassen zählen

Wie kannst du die Instanzen der Java Klassen zählen? Ganz einfach. Am besten ist es, wir bleiben beim Einführungsbeispiel zu den Java Klassen. Und ich wähle die Klasse „Monster“. Um es einfach zu halten, soll auch der Programmstart durch die Klasse erfolgen. Die Klasse bietet somit eine main-Methode an.

So unterstützen dich Java Vererbungstabellen beim Klassen-Entwurf

java programmierung vererbungstabellen klassenentwurf

Bei der Java Vererbung gibt es zwei Klassenarten bzw. -stufen. Die Superklassen, welche einen allgemeinen Typen darstellen Und die spezielleren Unterklassen, welche die Superklasse um bestimmte Funktionen erweitern. Jetzt ist dieses ganze „Der-erbt-von-dem-Konzept“ mitunter sehr schwierig darzustellen. Zum Beispiel in einem Werkzeugkoffer. In einem Werkzeugkoffer befinden sich sämtliche Werkzeuge, von […]

10 ganz nützlichen Feature der Klasse Java Math

java programmierung klasse math

In diesem Beitrag geht es um eine spezielle Java Klasse. Die Klasse nennt sich Java Math. Diese ist in der Standardbibliothek von Java enthalten. Warum solltest du diese Klasse kennen? Die Math Klasse bietet dir einen Menge Methoden an, welche zur Berechnung von mathematischen Gleichungen ganz hilfreich sind. Aber auch […]

So kannst du Konstanten in Java Programmen anlegen und nutzen

java programmierung konstanten anlegen und nutzen

Java Konstanten – was kann man sich darunter vorstellen? Du kennst Konstanten in der Mathematik. Die Kreiszahl Pi ist so eine konstante Zahl. Diese Zahl ändert sich niemals. Sie beträgt immer rund 3,141592. In der Physik gelten die Lichtgeschwindigkeit, der Erdradius oder der absolute Nullpunkt als konstant. Selbst die Geschwindigkeit […]

Die 5 verschiedenen Zahlensysteme in der Java Programmierung

java programmierung zahlensysteme

Java Zahlensysteme – Was soll das? In sämtlichen Programmiersprachen werden Zahlen in Variablen abgespeichert. Wenn du dir die einzelnen primitiven Datentypen in Java einmal anschaust – wirst du feststellen – dass die Masse der Datentypen Zahlen annehmen und speichern können. Zahlen und die Mathematik dahinter spielen in der Programmierung eine […]

So funktioniert die Java Konsoleneingabe über den Scanner

java programmierung konsoleneingabe scanner

Es wird Zeit für die erste Java Konsoleneingabe. Und diese Eingaben machst du über den Java Scanner. Was ist das? Der Scanner ist eine vorgefertigte Java Klasse, welche Java mit seiner API anbietet. Das heißt du musst nichts selbst erschaffen. Du musst nur wissen, wie du darauf zugreifst. Erst einmal […]

Lokale Variablen im Java Programm: Lebensdauer und Nutzung

lokale variablen im java programm

Lass uns über die Lebensdauer einer lokalen Variablen sprechen. Warum ausgerechnet die Lebensdauer? Alle Java Variablen, unterscheiden sich in folgenden Punkten: wo diese deklariert werden können, wie du diese aufrufen kannst, welchen Bereich diese abdecken, und Ihre Lebensdauer Und eine lokale Java Variable hat eine relativ kurze Lebensdauer. Schauen wir […]

So sorgt Java Polymorphie für besseren Code und mehr Möglichkeiten

java programmierung polymorphie code möglichkeiten

Polymorphie ist das Herzstück jeder objektorientierten Sprache. Nicht nur in Java – auch in Python, Javascript und in anderen Sprachen. Aber was bedeutet Polymorphie eigentlich? Polymorphie oder auch Polymorphismus genannt, kommt aus dem Griechischen. Es bedeutet Vielgestaltigkeit. Etwas freier übersetzt, kannst du es auch als Facettenreichtum bezeichnen. Im Grunde genommen […]

So kannst du in Java eine Binärzahl in eine Dezimalzahl umwandeln

java programmierung binärzahl in dezimalzahl umwandeln

Erinnerst du dich? In einer der letzten Beiträge haben wir uns die Zusammenhänge zwischen dem dualen und dem dezimalen Zahlensystem angeschaut. Aber wir haben noch keine Java Binärzahl in eine Dezimalzahl verwandelt. Zumindestens nicht praktisch…. Stattdessen…. Haben wir festgestellt, dass beide Zahlensysteme im Grunde genommen sehr ähnlich sind. Beim Dezimalsystem […]

So kannst du Java Superklassen mit dem Vererbungsbaum entwerfen

java programmierung superklassen vererbungsbaum

Vererbungsbaum in Java – klingt erstmal komisch. Dennoch wird dies so bezeichnet. Gemeint sind damit – die einzelnen Hierarchiestufen oder Vererbungsebenen – von der Superklasse bis runter zu den Kindklassen. Wie sieht das nun konkret aus? Vererbung bedeutet: Du definierst einen allgemeinen Typen – zB. Möbel Und dann implementierst du […]

Unterschied zwischen Klassenvariable und Instanzvariable im Java Programm

unterschied klassenvariable instanzvariable java programmierung

Bei der Java Programmierung unterscheidet man drei Arten von Variablen. Als erste Gruppe sind die lokalen Variablen zu nennen. Auf diese gehe ich in einem separaten Artikel ein. Mich interessieren die zwei anderen Variablentypen. Zum einen existieren Klassenvariablen. Und dann sind da noch die Instanzvariablen. Wo liegt der Unterschied zwischen […]

So funktioniert der Java Programmstart mit Argumenten-Übergabe

java programmierung programmstart argumente

Um ein Java Programm starten zu können, benötigst du immer die main-Methode. Das Programm startet immer genau an dieser Stelle. Alle lokalen Variablen, welche du in der Main Methode anlegst, kannst du dann im Programm nutzen. Auch alle Methoden, welche du innerhalb des Methodenrumpfes der main-Methode aufrust, werden ausgeführt. Was […]