Frage von LeonOttoAsk, 52

Kann man in Java einen Integer erstellen der für alle Klassen verfügbar ist und alle Klassen den Wert des Integers erhöhen können?

Frage steht im Titel. Ich möchte noch anmerken das ich aktuell in Greenfoot programmiere. Wenn das zu ungenau beschrieben war einfach fragen ich bin dankbar für jeden Tipp. 

Schonmal danke im Voraus

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von SirNik, 12

Du kannst eine Variable als statisch deklarieren, somit ist sie nicht an Objekt gebunden (an eine Klasse natürlich schon :$ wie auch immer man das sagen soll)

Das sähe so aus:
public static int zahl = 0;

Du kannst allerdings auch eine nicht statische Variable machen, dann benötigst du jedoch eine Instanz dieser Klasse:
public int zahl = 0;

In beiden Fällen hätten andere Klasse vollen Zugriff auf die Klasse, mit dem Unterschied, dass die zweite Variante eben nur funktioniert, wenn du ein Objekt dieser Klasse auf dem Heap (also im Objektspeicher) hast.


Etwas statisches (siehe main) existiert auch ohne Objekt und immer zur Laufzeit des Programmes.

Variante 1:

public class Klasse1
{
   public static int zahl;
   // mehr
}

class Klasse2
{
   public void zaehleHoch()
   {
      Klasse1.zahl++; // Inkrementiere zahl aus 
                      // Klasse1
   }
}

Variante 2:

public class Klasse1
{
   public int zahl;
   // mehr
}

class Klasse2
{
   public void zaehleHoch()
   {
      Klasse1 k1 = new Klasse1(); // Erstelle Instanz 
                                  // von Klasse1

      k1.zahl++; // Inkrementiere zahl vom Objekt k1
   }
}


Bei Variante 1 besteht die Variable zahl nur ein einziges mal im gesamten Programm!!!

Bei Variante 2 wird für jedes neue Objekt, dass du erstellst eine neue Variable zahl angelegt, d.h. je nachdem welches Objekt du aufrufst, diese variable wird hochgezählt (Vergleich Variante 1: Hier wird immer nur DIESELBE variable hochgezählt)

Von deinem Kontext her, denke ich aber eher, dass du Variante 1 möchtest.

Ich hoffe, ich konnte dir einigermaßen helfe.

Für etwaiger Fehler übernehme ich keine haftung :P

Viele Grüße
SirNik

Expertenantwort
von KnusperPudding, Community-Experte für Java, 16

Wenn alle auf 'denselben' Wert zugreifen sollen, solltest du deine Integer-Variable als static deklarieren

Antwort
von PeterKremsner, 26

Jein.

So etwas wie wirklich globale Variablen unterstützt Java nicht.

Du kannst aber den Integer jeder Klasse by reference übergeben.

Antwort
von triopasi, 23

Kannst in deiner Hauptklasse ein "public static int meineZahl" definieren..

Antwort
von FaibOouh, 30

Natürlich. Einfach public int deineZahl = 0; definieren.

Kommentar von LeonOttoAsk ,

habe ich ja aber der Wert erhöht sich trotzdem nicht

Keine passende Antwort gefunden?

Fragen Sie die Community