OOP Can not use this in a static context

xonic

Mitglied
Hallo zusammen,

ich weiß leider nicht wie ich diesen Fehler beheben kann.
"Can not use this in a static context"

Wahrscheinlich liegt es daran, dass die Main Methode statisch ist, jedoch weiß ich dann nicht, wie man es anders lösen könnte. Wenn ich alles zu statischen Eigenschaften und Methoden setze, funktioniert es zwar. Ich möchte jedoch auch mal ohne statische Eigenschaften und Methoden arbeiten können 😉.

Java:
public class sichtbarkeittest {

	public int b = 8;
	
	public static void main(String[] args) {
		
		// TODO Auto-generated method stub
	    System.out.println("Ausgabe: " + this.b); // Hier kommt der Fehler
	    System.out.println("2. Ausgabe + Edit " + this.editVar(5)); // Hier ebenfalls
	    System.out.println("3. Ausgabe: " + this.b); // und hier auch
	}
	
    public int editVar(int var) {
        int b = 0;
        b += var;
        return b;
    }
}

Vielen Dank!
 
Du erstellst nen neues Objekt von deiner Klasse
Code:
sichtbarkeittest
(<-- Groß schreiben!). Dann kannst du auch per
Code:
this.
auf die Attribute zugreifen.
 
funktioniert es zwar. Ich möchte jedoch auch mal ohne statische Eigenschaften und Methoden arbeiten können.

Dann tue dieses doch einfach 🙂


Java:
public class Sichtbarkeittest {

    private int b = 8;	
	
	
    public void setVar(int var) {
        b = var;
    }

    public int getVar() {
       return b;
    }

public static void main(String[] args) {
		
	    Sichtbarkeittest  st = new Sichtbarkeittest();

	    System.out.println("Ausgabe: " + st.getVar()); 

            st.setVar(5);

	    System.out.println("Ausgabe: " + st.getVar()); 
	}
}
 
Du erstellst nen neues Objekt von deiner Klasse
Code:
sichtbarkeittest
(<-- Groß schreiben!). Dann kannst du auch per
Code:
this.
auf die Attribute zugreifen.

Man könnte es so sehen, daß "this." ein Zeiger auf ein Objekt ist. Wenn es kein Objekt gibt, kann man auch nicht this.Object ansprechen...

Grüße,
Semo
 
Ganz abgesehen davon hätte die Methode [c]editVar()[/c] nicht funktioniert. Du deklarierst anfänglich in der Methode ein lokales [c]b[/c]. Dadurch wird das Klassenattribut [c]b[/c] schon mal nicht verändert. Danach addierst du den Wert von [c]var[/c] mit 0 - das gibt exakt den Wert von [c]var[/c]. Auf den Punkt gebracht macht deine version der Setter-Methode folgendes:
Java:
public int editVar(int var) {
    return var;
}
 
Hallo,
danke für eure Antworten. Hatte dann wohl vergessen daran zu denken, dass man das Objekt auch in der "Klasse selbst" erst erstellen muss.

@faetzminator
Ich weiß, das war nur ein Test um zu gucken, wie sich das mit den lokalen und globalen Variablen verhält, wenn diese mal den gleichen Namen haben 😉.
 

Zurück
Oben