Zähler Variable für mehrere Objekte

Pamyel

Mitglied
Ich brauche für ein Programm eine Variable die Pro erstelltem Objekt hoch zählt, aber wenn ich die Variable in der Klasse des Objektes erstelle wird sie in jedem Objekt einzeln hoch gezählt also ist die Merknummer des Objektes immer 1, ich möchte aber das die Merknummer des ersten Objektes 1, des zweiten 2...usw. ist.
Wie bekomme ich das hin?
 
Du erstellst die Variable in der Klasse in der du die Objekte der anderen Klasse erstellst.

in etwa so

Java:
public static void main(String[] args) {
        int count =0 ;
      
        TestKlasse test1  = new TestKlasse();
        if(test1!= null)   count++;

        TestKlasse test2  = new TestKlasse();
        if(test2!= null)   count++;
 
Also was Du vermutlich suchst, sind Klassenvariablen. Eine Variable in einer Klasse kann eine sogenannte Instanzvariable sein, dann gibt es eine Variable in jeder Instanz, oder eben eine Klassenvariable, dann existiert nur eine Variable in der Klasse.

Und diese kannst Du dann natürlich hoch zählen im Konstruktor:
Java:
public class MyClass {
    private static int instanceCounter = 0;
    
    public static int getInstanceCounter() {
        return instanceCounter;
    }
    
    public MyClass() {
        instanceCounter++;
    }
}

Du erstellst die Variable in der Klasse in der du die Objekte der anderen Klasse erstellst.

in etwa so

Java:
public static void main(String[] args) {
        int count =0 ;
     
        TestKlasse test1  = new TestKlasse();
        if(test1!= null)   count++;

        TestKlasse test2  = new TestKlasse();
        if(test2!= null)   count++;
Warum testest Du auf != null? Was für ein Fall kann es in Deinen Augen geben, bei dem die Variablen test1 und test2 nach der Zuweisung null sind?
 
Ich möchte eine MItgliedsnummer für jedes Objekt Member erstellen:
Java:
public class Member {
    private String name;
    private int mitglNr;
    private double grundBeitrag = 90;
    private double kursGebuhren;
    private int besKurse;
    private double monatsRechnung;
    private Studio Studio = new Studio();

    public Member(String name) {
        this.name = name;
        mitglNr = 1;//hier soll die MItgliedsnummer erstellt werden
        
    }

    public int getKurse() {
        return besKurse;
    }

    public double getMonatsRechnung() {
        monatsRechnung = grundBeitrag + kursGebuhren;

        return monatsRechnung;
    }

    public String toString() {
        return name + " " + mitglNr;
    }

    public void buchen(Kurs kPlus) {
        this.besKurse++;
        kursGebuhren = kursGebuhren + kPlus.getKursPreis();
        kPlus.anmelden();
    }

    public int getMitgliedsNummer() {
        return mitglNr;
    }

}
 
Zuletzt bearbeitet:
Die Nummern solltest du an einer Zentralen Stelle führen.

Du kannst die neue Nummer ja auch gleich beim Member Objekt erstellen, die neue Nummer mitgeben . Im Konstruktor damit sie in dem Objekt vorhanden ist.
 
Ich möchte eine MItgliedsnummer für jedes Objekt Member erstellen:
Das geht doch genau so, wie ich es schon gezeigt habe, nur eben wird die id direkt intern verwendet. Damit hat die Variable auch einen Sinn bekommen - nennen wir sie daher lastId.

Dann hättest Du (stark gekürzt) folgenden Code:
Java:
public class Member {
    private static int lastId = 0;
    
    public Member() {
        mitglNr = ++lastId;
    }
}

Hier nur noch der Hinweis: Das ist nicht Thread sicher. Das ist also nur tauglich für solche kleinen Tests / Spielereien um Java zu lernen. Und das wird natürlich bei jedem Programmstart immer wieder bei 1 anfangen.
 

Neue Themen


Zurück
Oben