2010-05-27 2 views

Répondre

18

Appartient à une classe. Regardez n'importe quelle implémentation de Hello-World et ce serait clair pour vous.

public static void main(String[] args) { 
    System.out.println("Hello World"); 
} 

ne compilera pas tel quel. Vous devez mettre class HelloWorld { ... } autour de lui, auquel cas vous pouvez dire que la méthode principale "appartient" à la classe HelloWorld.

Cependant, étant donné qu'il est statique, il n'appartient pas à un objet particulier. Il existe une différence importante entre les classes et les objets que vous devez connaître lorsque vous travaillez avec des langages orientés objet. Learning Java: Objects and Classes est un bon point de départ.

+0

maintenant incompris – billu

+4

+1, Bonne prise - on dirait que le problème était la compréhension de 'classe' et 'objet'! –

2

Chaque ligne de code Java (sauf import/package) vit dans une classe (ou est une déclaration de classe/interface). Il en est de même pour main.

+5

Qu'en est-il de 'import' ou' package'? ;-) –

+0

Modifié. Merci. – miku

+1

Qu'en est-il des commentaires? ;-) –

3

Oui. Chaque méthode ou champ doit appartenir à une classe (ou interface/enum).

1

En Java, toute application doit avoir la méthode main dans l'une des classes. Et il doit être exactement de la formule:

Voir plus in official lessons.

+1

Si vous comptez une application Web en tant qu'application, ce n'est pas le cas. Une application Web n'a pas besoin d'une méthode 'main'. –

+1

Mais pour exécuter votre application Web, une méthode 'main()' doit avoir été exécutée ... vous n'avez pas eu besoin de l'écrire. – Dolph

2

Si vous voulez dire si elle appartient à chaque classe, ce n'est pas le cas. Il appartient à la classe où vous le définissez.

Mais n'importe quelle classe peut avoir une méthode statique main.

0

son pas comme cette méthode principale appartient à une classe spécifique, il appartient à cette classe dans laquelle nous définissons la méthode principale. il peut s'agir de n'importe quelle classe

1

Toute classe dans java peut avoir un objet public void principal (String [] args). La fonction principale déclarée dans une classe (comme toute autre méthode statique) appartient à la définition de classe mais pas à son instance d'instanciation.

Si vous construisez un fichier JAR à partir d'une collection de classes, vous pouvez spécifier quelle classe dans le fichier JAR contient l'application principale méthode dans le META-INF/Manifest.mf utilisant le

Main-Class: fully qualified name of class (example: ie.mycode.MyApp) 

Lorsque vous exécuter la commande

java -jar [your jar file] 

Il va regarder le manifest et commencer à exécuter le code spécifié dans le main pour l'objet Main-Class.

1

Comme mentionné précédemment, il fait partie d'une classe, mais pas classe

Si votre classe en la "unnammed" or "default" package, vous principale méthode ne sera pas à call any other Java classes de cette classe initiale avec sa principale méthode().
Bien que cela puisse fonctionner, cela limitera considérablement ce que vous pouvez réellement faire dans cette méthode main.

donc ne pas utiliser une classe (i, e, pas un dans le package par défaut)

0

main est une méthode normale. La seule convention est que Java peut utiliser cette méthode (et seulement cette) pour «démarrer» une application. Si vous passez une classe à java.exe, elle essaie de refléter cette méthode (c'est pourquoi la signature de la méthode est absolument stricte!) Et l'invoque (si elle est trouvée). Ceci, en fait va «démarrer une application» (iaw: le premier thread).

1

Il doit appartenir à une classe, comme toute méthode, et doit être dans la classe que vous souhaitez exécuter après la compilation.

Les programmes ne peuvent commencer par l'exécution d'une classe qui a une méthode principale (note:. C'est applicale pour la plupart des types d'applications Java Applets, par exemple, fonctionnent différemment)

0

Lorsque nous essayons d'exécuter une classe dont chemin n'est pas connu de la machine virtuelle Java, vous obtenez une erreur/exception quelque chose comme ci-dessous

Exception in thread main: classdefnotfound........ 

Si principale appartient à la classe que nous essayons de courir alors pourquoi l'erreur dit exception in thread main cela peut se produire que lorsqu'un principal fil fonctionne

1

La méthode principale de Java appartient à une classe mais pas à un objet. Les objets sont créés au moment de l'exécution. Ainsi, puisque le principal main() en Java est le point de départ de votre application, il n'y a aucun moyen de démarrer votre application à partir d'une méthode spécifique à l'instance. C'est pourquoi le mot-clé static prend tout son sens avec la méthode principale. En fait, toutes les parties de la principale déclaration de méthode sens parfait quand vous pensez comme le « jvm » et de l'image que la principale méthode ne (lance l'application):

  • public, parce que cette méthode doit être accessible par le jvm (pas écrit par vous). Cela implique que cette méthode peut être accédée sans avoir d'objet (parce que sa représentation ne change jamais), mais ici la logique est facile à comprendre si vous pensez à nouveau comme jvm; "Je n'ai aucun objet pour créer (instancier) des objets, j'ai donc besoin d'une méthode statique pour démarrer l'application car il n'y a tout simplement aucun moyen logique d'obtenir une méthode spécifique à l'instance, car je n'ai rien encore créer des objets ".
  • void Cette méthode ne peut pas renvoyer quoi que ce soit car il n'y a encore rien à quoi renvoyer quoi que ce soit. C'est le point de départ de l'application. Je suis la méthode principale car sans moi vous n'aurez pas d'application. Envoyez-moi des données que vous pouvez vous sentir utiles pour mon démarrage.
Questions connexes