Que signifie public static void
en Java?
Je suis en train d'apprendre. Dans tous les exemples du livre sur lequel je travaille public static void
précède toute méthode utilisée ou créée. Qu'est-ce que ça veut dire?
Ce sont trois choses complètement différentes:
public
signifie que la méthode est visible et peut être appelée à partir d'autres objets d'autres types. Les autres alternatives sont private
, protected
, package
et package-private
. Voir ici pour plus de détails.
static
signifie que la méthode est associée à la classe et non à une instance (objet) spécifique de cette classe. Cela signifie que vous pouvez appeler une méthode statique sans créer d'objet de la classe.
void
signifie que la méthode n'a pas de valeur de retour. Si la méthode renvoyait un int
, vous écririez int
au lieu de void
.
La combinaison de ces trois éléments est généralement observée dans la méthode main
que la plupart des tutoriels incluront.
Les trois mots ont une signification orthogonale.
public
signifie que la méthode sera visible à partir des classes d'autres packages.
static
signifie que la méthode n'est pas attachée à une instance spécifique et qu'elle n'a pas "this
". C'est plus ou moins une fonction.
void
est le type de retour. Cela signifie "cette méthode ne retourne rien".
Le mot clé public est un spécificateur d'accès, qui permet au programmeur de contrôler la visibilité des membres de la classe. Lorsqu'un membre de la classe est précédé de public, il est possible d'accéder à ce membre à l'aide d'un code situé en dehors de la classe dans laquelle il est déclaré. (L'opposé de public est privé, ce qui empêche un membre d'être utilisé par un code défini en dehors de sa classe.)
Dans ce cas, main( )
doit être déclaré public car il doit être appelé par un code situé en dehors de sa classe lors du démarrage du programme.
Le mot clé statique permet à main( )
d'être appelé sans avoir à instancier une instance particulière de la classe. Ceci est nécessaire car main( )
est appelé par l'interpréteur Java avant la création d'objets.
Le mot clé void indique simplement au compilateur que main( )
ne renvoie pas de valeur. Comme vous le verrez, les méthodes peuvent aussi renvoyer des valeurs.
Cela signifie que:
public
- il peut être appelé de n'importe oùstatic
- il n'a pas d'état d'objet, vous pouvez donc l'appeler sans instancier un objetvoid
- il ne retourne rienOn pourrait penser que l'absence de retour signifie que cela ne fait pas grand chose, mais cela pourrait consister à sauvegarder des éléments dans la base de données, par exemple.
Cela signifie trois choses.
Tout d'abord public
signifie que tout autre objet peut y accéder.
static
signifie que la classe dans laquelle elle réside n'a pas besoin d'être instanciée avant que la fonction puisse être appelée.
void
signifie que la fonction ne renvoie pas de valeur.
Puisque vous venez tout juste d’apprendre, ne vous préoccupez pas trop des deux premiers tant que vous n’êtes pas renseigné sur les cours, et le troisième n’aura plus d’importance tant que vous ne commencerez pas à écrire des fonctions (autres que les fonctions principales).
Le meilleur conseil que j'ai reçu lors de l'apprentissage de la programmation et que je vous transmets, est de ne pas vous soucier des petits détails que vous ne comprenez pas tout de suite. Obtenez un aperçu général des principes fondamentaux, puis revenez en arrière et préoccupez-vous des détails. La raison en est que vous devez utiliser certaines choses (comme public static void
) dans vos premiers programmes qui ne peuvent pas vraiment être expliquées sans vous apprendre d'abord un tas d'autres choses. Donc, pour le moment, acceptez que c'est comme ça, et avancez. Vous les comprendrez bientôt.
Considérant la classe de haut niveau typique. Seuls les modificateurs d'accès public et sans modificateur peuvent être utilisés au niveau supérieur. Vous verrez alors public ou vous ne verrez aucun modificateur d'accès.
`static`` est utilisé parce que vous n'avez peut-être pas besoin de créer un objet réel au niveau supérieur (mais vous voudrez parfois que vous ne voyiez pas/n'utilisiez pas toujours static. Il y a d'autres raisons pour lesquelles vous n'incluez pas static aussi mais c’est le cas typique au plus haut niveau.)
void
est utilisé car vous n'allez généralement pas renvoyer de valeur du niveau supérieur (classe). (Parfois, vous voudrez renvoyer une valeur autre que NULL
afin que void ne soit pas toujours utilisé, en particulier dans le cas où vous avez déclaré, initialisé un objet au niveau supérieur auquel vous affectez une valeur).
Disclaimer: Je suis un débutant moi-même, donc si cette réponse est fausse de quelque façon que ce soit, veuillez ne pas me pendre. De jour je suis un recruteur de technologie pas un développeur; le codage est mon passe-temps. De plus, je suis toujours ouvert aux critiques constructives et adore apprendre, alors n'hésitez pas à signaler les erreurs éventuelles.
Public
- signifie que la classe (programme) est disponible pour être utilisée par une autre classe.
Static
- crée une classe. Peut également être appliqué aux variables et aux méthodes, ce qui en fait des méthodes/variables de classe au lieu d'être simplement locales à une instance particulière de la classe.
Void
- cela signifie qu'aucun produit n'est renvoyé à la fin du traitement de la classe. Comparez cela avec les classes auxiliaires qui fournissent une valeur de retour à la classe principale, celles-ci fonctionnent comme des fonctions; ceux-ci n'ont pas de nullité dans la déclaration.
public
signifie que vous pouvez accéder à la classe à partir de n’importe où dans la classe/l’objet ou en dehors du package ou de la classestatic
signifie une constante dans laquelle le bloc d'instruction n'a été utilisé qu'une foisvoid
signifie pas de type de retourstatic
signifie que la méthode est associée à la classe et non à une instance (objet) spécifique de cette classe. Cela signifie que vous pouvez appeler une méthode statique sans créer d'objet de la classe. En raison de l'utilisation d'un static
mot-clé main()
est votre première méthode à être invoquée. static
n'a besoin d'aucun objet pour instance ... donc, main( )
est appelé par l’interprète Java avant la création d’objets.