Frage zu Static



  • Hallo,
    Kann mir einer sagen, warum ich auf die private variable x über das objekt hs1 zugreifen kann???????

    public class HasStatic {
    
    	private static int x = 100;
    
    	public static void main(String[] args) {
    		HasStatic hs1 = new HasStatic();
    		hs1.x = 10;
    	}
    }
    


  • Wahrscheinlich weil die main Methode in der HasStatic Klasse ist.



  • Mich wundert das auch grad ein bisschen, normalerweise würde man ja über HasStatic.x darauf zugreifen. Aber schein zu funktionieren.



  • Eine variable, die als private deklariert ist, ist normaler weise ausserhalb des objektes nicht sichtbar. Aber in diesem Fall scheint es irgendwie ein mix zu sein. Die Main methode befindet sich zwar innerhalb meiner klasse aber ich greife auf meine variable über das objekt zu..... Also so ganz erklären kann ich mir das nicht!?



  • Eine variable, die als private deklariert ist, ist normaler weise ausserhalb des objektes nicht sichtbar.

    Wenn das Attribut oder eine Methode private ist, können diese in jeder Methode innerhalb dieser Klasse aufgerufen werden.



  • Da muesste eine Warnung vom Compiler kommen, aber ein Fehler ist es nicht...
    Ist ja auch Bloedsinn sowas zu machen, denn es kommt sicherlich eine NullPointerEx wenn hs1==null ist.



  • DEvent schrieb:

    Da muesste eine Warnung vom Compiler kommen, aber ein Fehler ist es nicht...
    Ist ja auch Bloedsinn sowas zu machen, denn es kommt sicherlich eine NullPointerEx wenn hs1==null ist.

    Nein, nicht mal das passiert. hs1 kann ruhig null sein, da der Compiler
    diese statische Variable schon zur Übersetzungszeit auflöst.
    Wie gesagt ist es Blödsinn, so etwas zu machen. Ich habe meine IDE so
    eingestellt, dass sie einen Fehler meldet, wenn versucht wird, statische
    Variablen über Objekte zu referenzieren.

    tfa



  • übrigens, man kann auch zugreifen, wenn die varibale nicht static ist, obwohl sie private ist, weil es in der selben klasse ist.


Anmelden zum Antworten