Frage von bishare, 54

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?

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von Gehilfling, 32

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.

Kommentar von bishare ,

Und wie mache ich das :/ ? Habe jetzt mein setter

public void setZahl(int zahl) {
Zahl= zahl;
}

Wie würde die Methode Kopf(); aussehen? 

Kommentar von bishare ,

Ah, habs schon. Muss nur noch den Fehler finden, wieso er es nicht in der Methode settet ._.

Antwort
von Suboptimierer, 25

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.

Antwort
von J0T4T4, 19

C++ bietet für soetwas Überladen von Operatoren. Ob Java das auch mitmacht weiß ich leider nicht.

Antwort
von ApertureTech, 21

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.

Keine passende Antwort gefunden?

Fragen Sie die Community