Auf Eigenschaften von Objekten anderer Klassen zugreifen

AurI

Mitglied
Hallo, ich fürchte ich habe einen Knoten im Hirn. Ich komme einfach nicht weiter.
Ich habe eine Klasse Player mit div. Eigenschaften wie id, name etc.
Java:
public class Player {

    private int id;
    private String name;
    private boolean isActive;
    // usw..
    
    public Player() {
    }

    public Player(int id, String name, boolean isActive) {
        this.id = id;
        this.name = name;
        this.isActive = isActive;
    }

    public int getId() {
        return id;
    }

    public String getName() {
        return name;
    }

    public boolean isActive() {
        return isActive;
    }

}

Dann habe ich eine Klasse Setup in der ein Player mit Namen player1 und seinen Eigenschaften erstellt wird:

Java:
public class Setup {
    
    int id = 1;
    String name = "user1";
    boolean isActive = true;

    private Player player1 = new Player(id, name, isActive);
    
    // hier passiert das ein oder andere mit den Eigenschaften

Dann komme ich im Laufe des Programms zur Klasse Game und möchte hier einem neuen Player player2 die Eigenschaften von player1 zuweisen. Aber wie spreche ich den jetzt an?

Mein Ansatz war
Java:
public class Game {
    
    private Player player2 = new Player();
    
    player2.id = player.getId() + 1;

usw....

Aber das geht so nicht (Eclipse meldet z.B Syntax error on oken "id", VariableDeclaratorId expected after this token) . Hat irgendjemand einen Tipp für mich? Ich möchte auch noch auf weitere Eigenschaften von player zugreifen und sie an player2 übergeben.
 

httpdigest

Top Contributor
In Java muss ausführbarer Code immer in Methoden stehen!
Die einzige Ausnahme ist die Deklaration von Klassenvariablen oder Instanzvariablen mit gleichzeitiger Initialisierung. Hier kann die Initialisierung ein Ausdruck sein, der nicht innerhalb einer Methode steht.
Der Code player2.id = player.getId() + 1; ist ausführbarer Code, der keine Initialisierung einer Variablendeklaration ist. Somit muss er innerhalb einer Methode (dazu zählen auch Konstruktoren und Initializer Blöcke) stehen.
Desweiteren ist `id` von `Player` als "private" deklariert. Somit kannst du nicht von außerhalb der `Player` Klasse auf `id` zugreifen. Schreibe z.B. einen "Setter" für `id` und die anderen Instanzvariablen von `Player`, die du außerhalb der Klasse `Player` setzen möchtest.
 

temi

Top Contributor
Die Attribute sind alle (korrekt) private deklariert. Deshalb kannst du nicht direkt darauf zugreifen.

Verwende z.B. den Konstruktor:

Java:
public class Game {
 
    private Player player2 = new Player(player.getId()+1, ...);
    // ...

oder erstelle Setter für die Attribute. Diese Lösung finde ich persönlich nicht so gut, denn eine Klasse sollte nachdem sie erzeugt wurde möglichst funktionsfähig sein. Deshalb würde ich auch den leeren Konstruktor von Player wieder löschen, denn eine "leere" Playerinstanz ist nicht sinnvoll. Außerdem sollte eine Klasse möglichst viel von ihrem Inneren Aufbau verbergen und nur nach außen geben, was unbedingt nötig ist. Darum sind Setter eher fragwürdig.

Oder baue dir einen Kopierkonstruktor für Player:
Java:
    public Player(Player other) {
        this(other.id, other.name, other.isActive);
    }

    public Player(int id, String name, boolean isActive) {
        this.id = id;
        this.name = name;
        this.isActive = isActive;
    }

Edit: Manche Attribute sollten natürlich von außen veränderbar sein. In deinem Fall ist es sinnvoll das sich die Id und der Name des Players nicht nachträglich ändern lassen, aber die Aktivität schon. Dafür solltest du entsprechende Methoden erstellen, z.B. void activate() und void deactivate().
 
Zuletzt bearbeitet:

TM69

Bekanntes Mitglied
Ein paar Sachen fallen mir so spontan auf:
  1. Woher kommt "player"?
  2. Wiese deklarierst du in der Klasse Setup die Attribute öffentlich und in Game player2 als private? (Unschöner Stiel)
  3. Du benutzt "player2.id = player.getId() + 1" außerhalb einer Funktion.
Normalerweise wenn du identische Klassen hast, die Daten untereinander austauschen, benutzt man einen Copy-Konstruktur bzw. die clone() - Funktion: s. http://www.angelikalanger.com/Articles/EffectiveJava/06.Clone-Part2/06.Clone-Part2.html
 

AurI

Mitglied
  1. Woher kommt "player"?
  2. Wiese deklarierst du in der Klasse Setup die Attribute öffentlich und in Game player2 als private? (Unschöner Stiel)
  3. Du benutzt "player2.id = player.getId() + 1" außerhalb einer Funktion.

Moin, TM69, sorry "player" ist ein Tippfehler, es handelt sich um player1, der wird als Objekt von Player in Setup erstellt. Die Attribute sind nur zum testen darin, eigentlich werden sie über die login-Funktion übergeben.

Ich hab mir mittlerweile überlegt, dass ich eigentlich gar keinen player2 brauche, wenn ich irgendwie direkt auf player1 zugreifen könnte. Ich habe in Setup einen Getter:
Java:
public Player getPlayer() {
        return player;
    }

Könnte mir jemand anhand eines Beispiel Codes zeigen, wie ich jetzt in "Game" an die Eigenschaften von "player1" komme? Ich habe schon so einiges ausprobiert, aber einfach das Objekt mit Punktoperator a la player1.getID() ansprechen geht wohl nicht so einfach, wie ich dachte.
 

mihe7

Top Contributor
Ich verstehe das Problem nicht ganz. Wenn Du ein Spiel erstellst, musst Du dem Spiel halt den Player oder das Setup mitgeben.
Java:
public class Game {
    private boolean gameOver;
    private Player player;

    public Game(Player player) {
        this.player = player;
    }
    // Oder auch:
    public Game(Setup setup) {
        this.player = setup.getPlayer();
    }
}

Wenn Du jetzt im Spiel eine Eigenschaft des Spielers brauchst, greifst Du halt über player auf das Player-Objekt zu:
Java:
    private void updateGameState() {
        if (player.isDead()) {
            gameOver = true;
        }
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Objekten ihre Eigenschaften zuweisen Java Basics - Anfänger-Themen 3
laxla123 Eigenschaften eines Algorithmus (determiniert vs.. deterministisch) Java Basics - Anfänger-Themen 2
Lion.King Ausgabe mit Eigenschaften Java Basics - Anfänger-Themen 4
Y Suche von Studenten anhand Ihrer Eigenschaften. Java Basics - Anfänger-Themen 1
E Eigenschaften Werte, in einer anderen Klasse, zuweisen Java Basics - Anfänger-Themen 40
I Eigenschaften von Position aus anderer Klasse übernehmen Java Basics - Anfänger-Themen 17
r4w Eigenschaften aus Objekt einer Liste holen Java Basics - Anfänger-Themen 3
M Eigenschaften einer Datei auslesen Java Basics - Anfänger-Themen 5
T Methoden und ihre Eigenschaften Java Basics - Anfänger-Themen 5
D Eigenschaften eines Objektes ändern Java Basics - Anfänger-Themen 1
S Ein Graphics Obejct mehrmals mit denselben Eigenschaften zeichnen lassen?!?!? Java Basics - Anfänger-Themen 4
S OOP Klasse mit static-Eigenschaften - HashMap füllen Java Basics - Anfänger-Themen 6
K Eigenschaften Definieren für Produkte in einer Klasse Java Basics - Anfänger-Themen 6
2 Klassen Eigenschaften eines Objektes an ein Unterobjekt übergeben Java Basics - Anfänger-Themen 6
Kenan89 JMenu Eigenschaften Java Basics - Anfänger-Themen 7
L eingegebene Strings nache Eigenschaften durchsuchen. Java Basics - Anfänger-Themen 25
D Zylinder/Eigenschaften (auf Größe) vergleichen Java Basics - Anfänger-Themen 16
E Reguläre Ausdrücke mit sehr variablen Eigenschaften Java Basics - Anfänger-Themen 2
Z OOP Probleme bei den Veto-Eigenschaften von Listenern Java Basics - Anfänger-Themen 8
A Zugriff auf andere Klass und die Eigenschaften Java Basics - Anfänger-Themen 17
C Eigenschaften außerhalb einer Klasse nicht sichtbar Java Basics - Anfänger-Themen 13
buntuswalus OOP Überschreiben von Eigenschaften Java Basics - Anfänger-Themen 8
W Algorithmen und Eigenschaften Java Basics - Anfänger-Themen 29
JFeel-x JComponent<-----Eigenschaften<-- Als Liste abfragen? Java Basics - Anfänger-Themen 8
G Tab Eigenschaften Java Basics - Anfänger-Themen 2
S Übersicht der Eigenschaften von Klassen Java Basics - Anfänger-Themen 8
P Eigenschaften eines Buttons ändern Java Basics - Anfänger-Themen 6
T Klasse mit Eigenschaften Java Basics - Anfänger-Themen 2
B eigenschaften eines objekt kopieren. how? Java Basics - Anfänger-Themen 8
G elemente in einem vektor nach ihren eigenschaften sortieren Java Basics - Anfänger-Themen 2
W Berechnung verschiedener Eigenschaften von Geraden Java Basics - Anfänger-Themen 4
G Nichtfunktionale Eigenschaften: Java Programm Java Basics - Anfänger-Themen 31
D Array List mit Objekten sortieren Java Basics - Anfänger-Themen 2
T Kollision von 2 Objekten Java Basics - Anfänger-Themen 2
T Variable von Objekten in einer Methode überprüfen Java Basics - Anfänger-Themen 26
B Reflection ändern von Objekten in Objekten Java Basics - Anfänger-Themen 12
H Kompliziertes Sortieren einer ArrayList mit Objekten(Sortieren nach X und Y) Java Basics - Anfänger-Themen 11
T Permanentes speichern von Objekten in einer ArrayList Java Basics - Anfänger-Themen 6
N Vererbung Queue bestehend aus Superclass- und Subclass-Objekten Java Basics - Anfänger-Themen 7
B Compiler-Fehler Array aus Objekten übergeben Java Basics - Anfänger-Themen 7
YAZZ Schlüsselworte Töten von Objekten Gameover Java Basics - Anfänger-Themen 2
F Abstand zwischen zwei Objekten berechnen wie? Java Basics - Anfänger-Themen 1
districon Vergleichen von Objekten Java Basics - Anfänger-Themen 20
Zeppi OOP Array in Objekten Java Basics - Anfänger-Themen 4
LetsSebi Methode, die einen arry von objekten speichert in einer datei Java Basics - Anfänger-Themen 6
JavaNoobi Try and Catch und übergabe von Objekten Java Basics - Anfänger-Themen 2
A Klasse Menge mit Objekten der Klasse Person Java Basics - Anfänger-Themen 8
S Auf Array aus Objekten zugreifen? Java Basics - Anfänger-Themen 1
D Mit Objekten rechnen, Textfield, JavaFX, Noob Java Basics - Anfänger-Themen 8
N enum Attribut von Objekten einer Hashmap ausgeben Java Basics - Anfänger-Themen 6
G Problem beim Speichern von Objekten in einer Datei Java Basics - Anfänger-Themen 7
N Klassen Rekursion mit Feldern von Objekten Java Basics - Anfänger-Themen 14
D Operatoren Mit Objekten rechnen Java Basics - Anfänger-Themen 7
E Datentypen Einfügen von Objekten in eine Map Java Basics - Anfänger-Themen 2
S Pane nach speziellen Child Objekten durchsuchen Java Basics - Anfänger-Themen 3
B ID von unterschiedlichen Objekten bekommen? Java Basics - Anfänger-Themen 2
T Daten von Objekten speichern Java Basics - Anfänger-Themen 7
PaperHat Programmieraufgabe - Objekte in Objekten Java Basics - Anfänger-Themen 2
L Rechnen mit Objekten Java Basics - Anfänger-Themen 3
S werte von objekten in schleife verändern Java Basics - Anfänger-Themen 14
D Zusammenarbeit von Objekten Java Basics - Anfänger-Themen 1
Y Begrenzte Anzahl an Objekten? Java Basics - Anfänger-Themen 12
Kornblume Nulltyp eines Arrays von Objekten? Java Basics - Anfänger-Themen 10
A Frage zur Aufgabe Uhrzeit einstellen mit Objekten Java Basics - Anfänger-Themen 18
M Generische Liste aus Comparable-Objekten Java Basics - Anfänger-Themen 6
G Klassen Call by Value auch bei Objekten? Java Basics - Anfänger-Themen 2
R Verständnisfrage zu Objekten u. Übergabeparameter Java Basics - Anfänger-Themen 8
arjoopy Kapselung Übergabe von Objekten aus ArrayList Java Basics - Anfänger-Themen 4
schoenosrockos Unterschied zwischen Objekten und vererbungen Java Basics - Anfänger-Themen 1
M Speichern von Objekten - Verfügbarkeit bei erneutem Aufruf Java Basics - Anfänger-Themen 3
R Methoden Methode ruft Methode auf, ruft Methode auf (mit Objekten) Java Basics - Anfänger-Themen 4
S Serialisierung: Laden von Objekten - Risiken? Java Basics - Anfänger-Themen 4
Shizmo PriorityQueue mit Objekten Java Basics - Anfänger-Themen 10
E Instanzieren von Objekten verkürzen Java Basics - Anfänger-Themen 1
F Interaktion von Objekten verschiedener Klassen... Java Basics - Anfänger-Themen 13
D Effiziente Verwaltung der Objekten und Unterobjekten Java Basics - Anfänger-Themen 18
N Dauer zwischen zwei LocalDateTime Objekten berechnen? Java Basics - Anfänger-Themen 4
L Subklasse von ArrayList nur mit bestimmten Objekten füllen Java Basics - Anfänger-Themen 1
E Erste Schritte Gute Erklärung zu Objekten / Klassen / Methoden / Sichtbarkeiten auf Deutsch Java Basics - Anfänger-Themen 3
S Problem mit augabe von Objekten Java Basics - Anfänger-Themen 3
T Junit Mockito: Instanz von inneren erzeugten Objekten Java Basics - Anfänger-Themen 4
P Zugriff auf Felder in ArrayList Objekten Java Basics - Anfänger-Themen 2
W Was passiert mit Objekten die nicht in Objektvariablen initialisiert werden ? Java Basics - Anfänger-Themen 3
D Zugriff auf von einer anderen Klasse erstellten Objekten Java Basics - Anfänger-Themen 5
S Liste mit Objekten und Listen Java Basics - Anfänger-Themen 9
Y Gleiche Arrays aus einem Array mit Objekten Java Basics - Anfänger-Themen 5
K Min eines Arrays mit Objekten Java Basics - Anfänger-Themen 6
M Array mit Objekten lässt sich nicht auslesen Java Basics - Anfänger-Themen 10
T Statische Arrays von Objekten Java Basics - Anfänger-Themen 2
J Methoden Einfügen von Objekten nach Alphabet in ArrayList funktioniert nicht Java Basics - Anfänger-Themen 2
B Erste Schritte Anzeige von Graphics Objekten einzeln aktualisieren Java Basics - Anfänger-Themen 1
TheSorm Koordinaten von gedrehten Objekten Java Basics - Anfänger-Themen 4
D Bestimmte Werte von Objekten aus einer ArrayList in eine andere ArrayList kopieren Java Basics - Anfänger-Themen 14
B Aliasing bei null-Objekten Java Basics - Anfänger-Themen 3
O Java Erzeugung von neuen Objekten Java Basics - Anfänger-Themen 1
J Verständnisfragen zu dem Thema Objekten Java Basics - Anfänger-Themen 7
J Array von Objekten, wie schauts im Heap / Stack aus ? Java Basics - Anfänger-Themen 7
O Größe von Objekten Java Basics - Anfänger-Themen 5
Y Variable Menge von Objekten erzeugen und mit ihren Attributen rechnen Java Basics - Anfänger-Themen 7
kaoZ Best Practice Verständnisfrage Listener bei lokalen Objekten Java Basics - Anfänger-Themen 8

Ähnliche Java Themen

Neue Themen


Oben