Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
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?
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++;
}
}
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;
}
}
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.
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.