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

8 Java Datentypen, die du kennen solltest

Java Datentypen

Java Datentypen Ich gebe zu, ich hasse dieses Thema. Denn es ist eigentlich nichts weiter als graue Theorie. Dennoch müssen wir dieses Thema behandeln. Um schnell in das Thema zu kommen, stelle ich dir eine Übersicht aller primitiven Datentypen zur Verfügung. Wieso primitive? Es gibt außer den primitiven Datentypen, noch Referenztypen. Und diese Referenztypen sind […]

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

Der Java Datentyp boolean im Interview

Java boolean

Nein, ich bin nicht verrückt. Aber… Neulich traf ich zufällig den Java Datentyp boolean. 🙂 Er erklärte sich bereit, mir ein Interview zu geben. In diesem Interview geht es um die Werte, welcher dieser Wertetyp annehmen kann. Und in diesem Zusammenhang geht es auch um Logik. Also lassen wir uns doch die Logik vom direkten […]

Nutze das Keyword this für deine Java Konstruktoren

Java konstruktoren this

Es ist gemein. Wahrscheinlich hast den Beitrag zu den lokalen Variablen gelesen. Vielleicht hast du auch den Artikeln zum Anlegen und Überladen von Java Konstruktoren gelesen. Und wenn du die beschriebene Inhalte selbst ausprobiert hast…… Dann hast du dir wahrscheinlich sehr viele lokale Variablennamen für die Parameterliste ausdenken müssen.

Java Exklusives Oder – So nutzt du den Xor Operator

Java exklusives oder

In diesem Beitrag möchte ich dir den Xor Operator von Java vorstellen. Dieser Operator wird auch als ausschließendes oder exklusives Oder bezeichnet. Ein Beispiel: Was wilst du heute zum Mittag essen: Fleisch oder Fisch? Auf diese Frage gibt es nur eine Antwort. Es ist entweder Fisch oder Fleisch. Niemals beides. Das Eine schließt das andere […]

Lassen wir Java rechnen – Die Rechenoperationen für Variablen

Java rechnen

Ich liebe Mathe. In der Biographie „Der Mann, der die Zahlen liebte“, stellt Paul Hoffmann das Mathematikgenie Paul Erdös vor. Erdös war eines der größten Genies des 20 Jahrhunderts. Er arbeitete mit zahlreichen Wissenschaftlern zusammen und verfasste durchschnittlich mehr Publikationen im Jahr, als andere Mathematiker im ganzen Leben. Da Erdös sich mit sehr vielen Theoremen […]

Java Übung 17: Char-Zeichen mit For-Schleife

Java Übung Char Zeichen For Schleife

In dieser Java Übung werden wir uns die Zeichen des Character Datentypen näher anschauen. Die einzelnen Zeichen sollen auf der Konsole ausgegeben werden. Und wie? Das ganze sollst du mit einer For Schleife machen. Erstelle deshalb eine Klasse „CharZeichen“. In dieser Klasse implementierst du dann eine Klassenmethode, namens „gibZeichen“. Und im Methodenrumpf durchläuft eine For-Schleife […]

Der Aufbau von Java Klassen

Java Klassen Aufbau

Jedes Java Programm besteht aus Java Klassen. Doch wie sind diese aufgebaut? Wie setzt sich die Struktur zusammen? Wo befinden sich Klassen hierarchisch? Was kommt in die Klassen rein und wie wird es integriert? Das sind die Fragen, welche ich in diesem Artikel beantworten werde. Doch bevor wir bei den Klassen ansetzen, müssen wir eine […]

Java lernen – 10 nützliche Tipps für Java Anfänger

Java Lernen Anfänger

Wenn du die Programmiersprache Java lernen möchtest, bist du hier prinzipiell erst einmal richtig. Und wenn du es wirklich ernst meinst und in die Java Programmierung einsteigen möchtest, solltest du auch meinen kostenlosen Java Kurs beanspruchen. Wenn du dabei bist, bekommst du: Eine Lektion pro Woche zu den Basics. Hier geht es um die ersten […]