Skip to main content

So kannst du 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.


public class Monster {

	public static void main(String[] args) {

	}
}

Also dann mal los. 🙂

Um Instanzen von Java Klassen zählen zu können, musst du diese speichern.

Ganz klar – Du musst die Anzahl speichern.
Um speichern zu können, brauchst du eine Variable.

Doch in welcher?
Ich sage es dir: In einer Klassenvariablen.

Wieso?
Schau dir das Bild dazu an.

Java Klassen Instanzen zählen Instanzvariablen

In der Klasse Monster legst du die Instanzvariablen für ein Monster an.
Das könnten sein:

  • Die Größe
  • Die Farbe
  • Die Stärke

Da es sich um Instanzvariablen handelt, bekommt jedes Monster einen individuellen Wert.
Und zwar für jede Instanzvariable.
Denn Instanzvariablen gehören zum Objekt.

Java Klassen Instanzen zählen Eigenschaften

Du kannst auch sagen, dass Instanzvariablen die Eigenschaften der Monster darstellen.

Und Klassenvariablen gehören zu allen Objekten.
In diesen Variablen würdest du Werte speichern, welche für alle Monster gelten.

Damit meine ich nicht, dass alle Monster blau sind.
Dies ist wieder eine Monstereigenschaft.

Aber ein Wert wäre die Gesamtstärke aller Monster oder eben die Anzahl.
Diese Werte wären keine individuellen Monsterwerte.
Oder willst du Monster haben, welche als Eigenschaft eine Anzahl haben? 🙂

Welchen Datentypen sollte die statische Variable haben?
Die Anzahl wird ganzzahlig sein – Also Integer.

Und so sieht es bisher aus:


public class Monster {
	static int anzahlMonster;//Klassenvariable zum Zählen der Instanzen
	
	public static void main(String[] args) {

	}
}

Die Variable, welche die Instanzen der Java Klassen zählt, muss im Konstruktor verändert werden.

Um Java Objekte anzulegen benötigst du einen Konstruktor.
Bei jedem Aufruf des Konstruktor soll dann die Klassenvariable „anzahlMonster“ um eins erhöht werden.

Also – Was brauchst du?

  • Einen Konstruktor.
    Im Rumpf des Konstruktors wird die Variable erhöht.
  • Du brauchst Monster.
    In der main-Methode werden zwei Monster angelegt.
    Somit wird der Konstruktor zweimal aufgerufen.

Und so geht’s.


public class Monster {
	static int anzahlMonster;

	/*
	 * Im Konstruktor soll jetzt die Variable erhöht werden
	 */
	Monster() {
		anzahlMonster++;// Bei jedem Konstruktoraufruf um eins erhöhen
	}

	public static void main(String[] args) {
		Monster monster1 = new Monster();// Monsterobjekt - Konstruktor wird einmal aufgerufen
		Monster monster2 = new Monster();// neues Monsterobjekt- zweiter Aufruf des Konstruktors
	}
}

Und so kannst du dir die gezählte Anzahl der Instanzen zurückgeben lassen.

Jetzt hast du die Anzahl der Objekte gespeichert.

Du möchtest aber die Information erhalten, wie viele Monster-Objekte im Programm vorhanden sind.
Die gezählten Objekte kannst du dir direkt im Konstruktor zurückgeben lassen.
Somit bekommst du gleich eine Info direkt bei der Erstellung der Instanz.


public class Monster {
	static int anzahlMonster;

	/*
	 * Im Konstruktor soll jetzt die Variable erhöht werden
	 * Bildschirmausgabe gibt Anzahl zurück
	 */
	Monster() {
		anzahlMonster++;
		System.out.println(anzahlMonster + ". Monster angelegt");//Info
	}

	public static void main(String[] args) {
		Monster monster1 = new Monster();
		Monster monster2 = new Monster();
	}
}

Oder du erstellst eine Methode, welche dir die Information liefert.
Im Falle einer Bildschirmausgabe, erstellst du eine void-Methode.


public class Monster {
	static int anzahlMonster;

	Monster() {
		anzahlMonster++;
		System.out.println(anzahlMonster + ". Monster angelegt");//Info
	}
	
	static void gibInfo(){
		System.out.println("Anzahl Monster: "+ anzahlMonster);
	}

	public static void main(String[] args) {
		Monster monster1 = new Monster();
		Monster monster2 = new Monster();
		
		gibInfo();//Aufruf der Methode
	}
}

Wichtig ist, dass du diese Methode statisch machst- also als Klassenmethode.
Dadurch musst du kein unnötiges Objekt anlegen, um diese Methode aufzurufen.

Zusammenfassung:

  • Wenn du Instanzen der Java Klassen zählen möchtest, musst du eine Variable anlegen.
  • Bei jedem Anlegen eines neuen Objektes wird die Variable im Konstruktor hochgezählt.
  • Da diese Variable für alle Instanzen zuständig ist, muss diese statisch sein.

Ähnliche Beiträge

Von Java Klassen zum Java Programm – Der Programmstart

Java Klassen ausführen

In den letzten Beiträgen hast du gelernt, wie Java Klassen erstellt werden und aufgebaut sind. In diesem Beitrag geht es um den Programmstart. Ich will dir zeigen, was nötig ist, dass du ein Java Programm ausführen kannst. Und ich zeige dir außerdem, wie du eine Startklasse in einem x-beliebigen Javaprogramm anlegst. Wie auch schon zuvor, […]

So organisierst und verwaltest du ganz bequem deine Java Projekte

Du kennst das auch. Denn du bist ja fleißig. Und weil du so fleißig bist, hast du mitunter auch mehrere Java Projekte gleichzeitig laufen. Und dann kommt es vor, dass du enorm viele Java Projekte am Laufen hast. Und dein Package-Explorer wird extrem unübersichtlich. In diesem Beitrag möchte ich dir zwei Varianten vorstellen, wie du […]

So nutzt du die While Schleife in deinem Java Programm

Java While Schleife

Manchmal ist es wichtig, Dinge einmal öfter zu tun. Bei der Java Programmierung kann es schonmal sein, dass du einen Code mehrfach ausführen lassen musst. Zum Beispiel die Zahlen eins bis zehn. Ein Java Programm, welches die Zahlen eins bis zehn wiedergibt. Na wie wäre das? Der Java Code dazu würde so aussehen: public class […]

So lassen sich Java Arrays kopieren

Java Arrays kopieren

Java Arrays kopieren oder klonen…. Was heißt das eigentlich? Eine Kopie ist eine Reproduktion bzw. die Nachbildung eines Originals. Somit ist jede Fotographie – die Abbildung einer bestimmten optischen Wirklichkeit, zu einem festen Zeitpunkt. Die Kopie einer Buchseite ist das optische Abbild dieser spezifischen Buchseite – auch zu einem festen Zeitpunkt. Wichtig in diesem Zusammenhang […]

Der wichtige Unterschied zwischen Java Methoden

Java Methoden Unterschied

Jetzt machen wir Nägel mit Köpfen. Dieses Sprichwort stammt aus den Anfängen des Industriezeitalters. Denn früher wurden Nägel nicht industriell, sondern per Hand gefertigt. Und da kam es schon einmal vor, dass versehentlich Nägel ohne Kopf produziert wurden. Was blieb ist das Sprichwort „Nägel mit Köpfen“ Und dieses steht sinngemäß für eine schnelle, qualitativ hochwertige […]

Nutze die richtigen Methoden zum Java Lernen

Java lernen Methoden

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 noch einen. Aber das Wichtigste. […]

Overriding und Vererbung – So lassen sich Java Methoden überschreiben

Java Methoden überschreiben

In Deutschland entstehen jeden Tag tolle Geschichten. So wie diese hier…. Die größte Turmuhr der Welt, die Makkah Clock, steht in Saudi – Arabien. Und zwar direkt in Mekka. Hier ein paar Eckdaten zur Uhr: Höhe des Turmes 601 m. Das Ziffernblatt der Turmuhr hat einen Durchmesser von 43 Meter Die Länge des Minutenzeigers beträgt […]

Die sechs Bestandteile von Java Methoden

Java Methoden Bestandteile

Java Methoden hauchen deinem Java Programm Leben ein. Ohne eine Methode würde deine Java Klasse ein starres Konstrukt sein. Deine Objekte hätten Eigenschaften. Aber sie könnten nichts machen. Und das wäre eine trostlose Welt. Java Methoden sorgen also dafür, dass Objekte interagieren. Methoden bestehen aus bestimmten Bausteinen. Und diese Bausteine bestimmen, was die Methode darf […]

Java Konsolenausgaben mit formatierten Zahlen

Java Konsolenausgaben 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 den Tausenderpunkt. Vielleicht möchtest du […]