Attribute einer Klasse in eine andere Klasse durch eine Methode verändern?
Habe in Klasse A ein Attribut und ein Konstruktor
private int Zahl;
public A(int Zahl) {this.Zahl = Zahl;}
und noch ein getter für Zahl
private int getZahl() {return Zahl;}
Wie bekomme ich es jetzt hin, dass ich in eine andere Klasse RichtigesRechnen über Methoden mein Attribut Zahl verändere? Kriege immer Fehlermeldungen, wie "Change visibilty to package" oder irgendein setter Problem.
Meine Methode in RichtigesRechnen würde dann so aussehen:
public void Kopf() { Konstruktor A = A(3)
Konstruktor.Zahl = Konstruktor.Zahl + 5; }
So funktioniert es leider nicht :// wie würde es denn richtig aussehen?
4 Antworten
Der Konstruktor wird nur aufgerufen, wenn du ein Objekt der Klasse A erstellst. Beispielsweise:
A Beispiel = new A(5);
Dann wird ein Objekt der Klasse A erzeugt mit Namen "Beispiel", und in deine Variable "Zahl" wird 5 geschrieben.
Willst du ein bestehendes Objekt verändern, musst du eine Setter-Funktion schreiben, damit du auf "Zahl" im Nachhinein noch schreibend zugreifen kannst.
Entweder du deklarierst Zahl public (unüblich) oder du definierst noch eine Setter-Methode.
Ich weiß nicht, wie das genau in Java aussieht, aber entweder gibt es ein Alias für Properties, welche auf die Getter- und Settermethoden zugreifen, welcher public / published ist, die Getter- und Settermethoden müssen public sein oder eben die Zahl selbst.
public ist das Tor nach außen. Irgendetwas muss public (oder ähnlich) sein, was auf Zahl zugreift.
C++ bietet für soetwas Überladen von Operatoren. Ob Java das auch mitmacht weiß ich leider nicht.
Entweder kannst du zahl public anstatt private deklarieren, dann kannst du einfach per A.Zahl darauf zugreifen, d.h. lesen und verändern. Oder du schreibst in A noch eine set-Methode - mit get allein kannst du zwar Lesen, aber nicht schreiben.
Und wie mache ich das :/ ? Habe jetzt mein setter
public void setZahl(int zahl) {
Zahl= zahl;
}
Wie würde die Methode Kopf(); aussehen?