Cannot make a static reference to the non-static method

Fungi

Mitglied
"Java programmieren aus Leidenschaft" - sehr gut. Bei mir ist Java grade das, was "Leiden schafft" 😉

Zu meinem Problem.
Ich habe verschiedene Klassen und will bestimmte Werte von der einen Klasse in die andere "bekommen". Das ganze geschieht ja in der Regel mit der getMethode. Nur bei mir will es heute einfach nicht klappen! Eclipse schimpft mit mir und sagt:

"Cannot make a static reference to the non-static method (...)"

Die eine Klasse heißt "ArtikelGeschenk" .. die zweite "Artikel"..
ich will den Preis eines Artikels bei einem "ArtikelGeschenk" als Wert hinzufügen.

Code:
//Ausschnitt aus ArtikelGeschenk.java

public double getWert(){
		return Artikel.getPreis();
	}

Code:
//Ausschnitt aus Artikel.java	
public double getPreis(){
		return preis;
	}

zusätzlich ist es vielleicht noch wichtig, dass "ArtikelGeschenk.java" eine Tochterklasse von der abstrakten Klasse Geschenk.java ist.
Beim Ausführen des Konstruktors von "ArtikelGeschenk.java" wird in den Parametern ein "Artikel" übergeben... also... lieber nochmal den ganzen Code von ArtikelGeschenk:

Code:
public class ArtikelGeschenk extends Geschenk {
	private Artikel artikel;
		
	public ArtikelGeschenk(Person schenker, Artikel artikel){
		super(schenker);
		this.artikel = artikel;
	}
	
	
	public Artikel getArtikel(){
		return artikel;
	}
	public double getWert(){
		return Artikel.getPreis();
	}
	
	public String toString(){
		return getArtikel()+" von "+super.getSchenker()+" im Wert von "+ getWert()+"€";
	}
}

Wenn das Programm fertig ist, soll es übrigens man damit übrigens mal Wunschzettel generieren können ... nur als Info, falls sich jemand wundert 😉
 
Du solltest die Variable klein schrieben, dann geht's:

Java:
        public double getWert(){
		return artikel.getPreis();
	}

Artikel ist die Klasse und artikel ein Objekt, also eine Instanz der Klasse. Um auf Instanzvariablen und -methoden zu greifen zu können, brauchst du ... genau, eine Instanz. Und da
Code:
public double getWert()
ohne ein
Code:
static
definiert ist, ist es eine Instanzmethode.
 
Danke für eure schnelle Hilfe!

Alex: das war der Fehler ... vor lauter "Artikel" war ich blind! :autsch:

eRaaaa: danke für die Links - damit werd' ich das alles nochmal vertiefen.
 

Neue Themen


Zurück
Oben