2014-04-19 2 views
0

Il est dit en Java que nous ne pouvons pas appeler une méthode non statique à partir d'une méthode statique .. qu'est-ce que cela signifie exactement? On peut toujours appeler une méthode non statique frm statique utiliser l'objet bien que .. 'pls l'explicationLa méthode statique dans Java peut appeler une méthode non statique

+0

écrire du code qui tente de faire ce qui est rapporté à ne peut pas être fait. Puis * recherche * pour le message d'erreur. Vous trouverez beaucoup de doublons comme http://stackoverflow.com/questions/5201895/calling-the-instance-of-a-static-method?rq=1, http://stackoverflow.com/questions/18375971/can- i-call-instance-method-d'-un-static-member-from-within-static-context? rq = 1 (ou cette) duplication possible de [Quelle est la raison derrière "la méthode non statique ne peut pas être référencée à partir d'un contexte statique "?] (http://stackoverflow.com/questions/290884/what-is-the-reason-behind-non-static-method-cannot-be-referenced-from-a-static) – user2864740

Répondre

0

Pour appeler une méthode non statique, vous avez besoin d'une instance (objet) - parce que ces méthodes appartiennent à une instance, et en général n'ont de sens que dans le contexte d'une instance.

Les méthodes statiques n'appartiennent pas à une instance - elles appartiennent à la classe. Il n'y a donc pas besoin de créer une instance d'abord, vous pouvez simplement appeler MyClass.doSomething()

void foo(){ 
    MyClass.doSomething(); 
} 

Mais vous pouvez appeler une méthode non-statique à partir d'une méthode statique à condition que vous créez une instance.

static void bar(){ 
    MyObject o = new MyObject(); 
    o.doSomething(); 
} 
1

Voici un beau morceau de code pour illustrer ce que cela signifie:

class MyClass{ 

    static void func1(){ 
     func2(); //This will be an error 
    } 

    void func2(){ 
     System.out.println("Hello World!"); 
    } 

} 
Questions connexes