2010-01-28 5 views
0

En this code je vois les lignes suivantes avant que la méthode « principale »:Qu'est-ce que "ClassName objectName;" fait avant la méthode principale?

JTextArea displayArea; 
JTextField typingArea; 

Je me demande ce que ces lignes font et quand ils sont exécutés. Pour autant que je sache, la méthode "principale" est le "point d'entrée". Ainsi, le code sera exécuté depuis le début de la méthode "main". Toutes les autres méthodes seront exécutées si elles sont appelées à partir de la méthode "main". Si c'est le cas, les 2 lignes mentionnées ne seront jamais exécutées. De plus, même s'ils vont être exécutés, que font-ils exactement? Que font ces paires de "ClassName objectName"?

Répondre

2

Ce sont les "déclarations". Ils déclarent l'existence de deux variables, en indiquant leurs types et leurs noms. L'emplacement de la déclaration détermine leur scope, en d'autres termes, quelles parties du programme sont autorisés à connaître ces variables particulières, et peuvent s'y référer.

Voici a tutorial about Java variables.

0

Vous n'avez pas inclus le fichier entier.

Ce sont les déclarations de champs. Cela indique que lorsque la classe est instanciée (c'est-à-dire qu'un objet en est créé), chaque objet aura une référence à une zone de texte et à un champ de texte. Vous devrez cependant créer ces objets.

Notez que votre méthode principale est statique. Cela signifie qu'il peut s'exécuter sans que la classe conteneur soit instanciée. Cependant, la plupart des méthodes Java fonctionnent sur des objets. Supposons que votre main soit dans la classe C. Il est probable que quelque part dans votre main, vous verrez un "nouveau C" qui signifie qu'une instance de C est créée. Ensuite, une autre opération sera appelée sur ce nouvel objet (recherchez d'autres méthodes non statiques dans le fichier), et ces opérations manipuleront ces deux champs.

0

spécifie les types.

JTextArea displayArea; // this creates textarea type and thus textbox 
JTextField typingArea; // thus creates textfield type var and thus text field 
0

Ce sont des membres (référence) variables de la classe KeyEventDemo.

Lorsque KeyEventDemo instancié à l'aide du mot-clé new, chaque instance aura une ces variables pour désigner un respectivement JTextArea et JTextField. Ceux-ci sont initialisés à null et sont attribués en tant que références à quelques instances de la méthode addComponentsToPane.

0

Ces déclarations sont évaluées lorsque l'objet est instancié par la machine virtuelle Java. C'est juste avant la méthode main est ce cas.

+1

La deuxième phrase est incorrecte. La méthode 'main' est' static' et (dans le code lié) est appelée * avant * la classe est instanciée. (La méthode 'main' appelle ensuite une autre méthode statique qui crée une instance de la classe.) –

+0

Steven a raison. Je vous remercie. – DerMike

0

Ce sont des membres de classe.

Fondamentalement, dans une classe java, vous avez des méthodes et des membres. Les membres sont des variables qui contiennent l'état des objets qui sont des instances de cette classe.

La méthode principale est séparée, c'est une méthode statique, donc elle peut fonctionner sans qu'il y ait une instance de la classe. Vous avez donc une logique qui s'exécute dans main() et vous avez une logique qui s'exécute sur une instance de la classe. Ils sont séparés.Si vous le souhaitez également, dans votre fonction main(), vous pouvez créer une instance de la classe, et cela pourrait fonctionner si une initialisation des fonctions membres est nécessaire. Cependant, tous les membres de la classe ne sont pas initialisés dans le constructeur, et ceux-ci resteraient nuls (dans ce cas, rien ne serait 'exécuté' à ce moment-là). Dans votre exemple, il n'y a pas d'initialisation, donc ces membres seraient null lorsque la logique du constructeur commence.

+0

Je pense que les appeler "membres de classe" est trompeur car ils ne sont pas marqués statiques, les appeler des variables d'instance est approprié. – sateesh