Über den Konstruktor auf Getter und Setter zu greifen?


05.09.2020, 19:04

Der Code:

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Hey Morgoth364,

es ist etwas schwer zu verstehen was Du meinst. Evtl. kannst Du etwas Code zeigen?

Von dem was Du schreibst rate ich mal und deine getter und setter Methoden sind nicht "public" sondern "private".

Versuch mal sowas:

public void shouldBeAvailable() {
} 

Die Methode sollte auch von anderen Klassen aus verfügbar sein.

Aufruf dann mit:

MyObject myObject = new MyObject();
myObject.shouldBeAvailable();

Gruß

Woher ich das weiß:Berufserfahrung
Morgoth364 
Fragesteller
 05.09.2020, 19:05

Also meine Getter und Setter sind public.

Der Code steht jetzt oben. (Extra mit dem Fehler)

0
AldoradoXYZ  05.09.2020, 19:29
@Morgoth364

Naja, bei deiner goForward-Methode greifst Du auf das Objekt "donut" zu, aber Du erzeugst nie eins.

Irgendwo muss mal stehen

Donut donut = new Donut();

Gruß

1
AldoradoXYZ  05.09.2020, 19:30
@AldoradoXYZ

Ich sehe grad der Spieler bekommt den Donut übergeben.

Also, dann muss im Konstruktor vom Spieler das hier stehen:

this.donut=donut;

Und die Klasse Spieler muss dieses Feld erhalten:

Donut donut = null;

Gruß

1
Morgoth364 
Fragesteller
 05.09.2020, 19:39
@AldoradoXYZ

Danke! Jetzt funktioniert es.

Aber warum muss man das nicht bei dem 'feld' Parameter machen?

Gruß

0
AldoradoXYZ  05.09.2020, 19:42
@Morgoth364

Guck dir mal die Parameterliste von deiner goForward-Methode an...da steht:

goForward(Feld feld)....

Damit wird ein Feld als Parameter an die Methode übergeben.

Du benutzt also nicht "Feld" der Klasse Spieler, sondern das Feld, welches eben beim Aufruf der Methode übergeben wird.

Gruß

1
Morgoth364 
Fragesteller
 05.09.2020, 19:46
@AldoradoXYZ

Also müsste es doch theoretisch auch mit 'Donut.getLocation1' gehen, aber da steht dann ich soll den Getter zu static ändern.

Sorry! Falscher Gedanke.

Vielen Dank für deine Hilfe!

0
AldoradoXYZ  05.09.2020, 20:43
@Morgoth364

Ja, mit "static" ist super verwirrend.

Ich halte das auch für eine der größten Anfängerfallen.

Leider gibt es mindestens ein "static" in solchen Standard-Javaprogrammen und das ist die Main-Methode. Da muss man sich leider durchbeißen.

Irgendwann weiß man dann was static genau ist und dann ist das auch klar.

Gruß

1