Skip to main content

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.


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

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 […]

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 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 […]

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 […]

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 […]