Bonjour tout le monde
Comme je suis en train de visualiser des codes sources de quelques programmes simples en java en même temps avec des tutorials je trouve souvent une référence a des mots clefs dans la définitions des classes et ce ci au début de chaque script dans la plupart des cas .
Je comprends bien que java est un OOP et que chaque partie de tout scripte est considéré comme un Objet ou classe . c’est comme si on est en train de construire chaque programme ou application avec des petits pièces préfabriquées .
J’aimerai bien confirmer ca avec vous et en plus me donner des explications sur quelques mots clefs comme
« public , static , main » principalement.Car ce sont des mots clefs qui ne cessent pas de me sauter aux yeux
Merci pour vous d’avance

mc est une instance de MyClass. l'instanciation est la création d'un objet à partir d'une classe.
main:
c'est l'inverse: lorsqu'on dit à la JVM de lancer tel programme, elle commence par la méthode main. Si tu as fait du C c'est exactement la même chose. si tu n'en n'as pas fait, considère que le main est le point d'entrée de ton programme.
Public et private:
une méthode ou une variable peut être soit public, soit private. (ou protected ou par defaut mais on va se contenter de private et public pour commencer). On apelle ça des access modifier. Ce sont des mots clés qui déterminent QUI peut utiliser la dite méthode ou variable.
class MyClass{ private int nombre; public setNombre(int i){ if(i<100){ this.nombre=i; } else{ System.out.println("Hors de question, nombre doit être inférienr à 100"); } } public int getNombre(){ doStuff(); return this.nombre; } private void doStuff(){ System.out.println("do something"); } } class MyOtherClass{ public static void main (String [] arg){ MyClass myInstance= new MyClass(); // j'instancie MyClass, ça me donne un objet de type MyClass //Insert Code Here System.out.println(myinstance.getNombre()); } }J'ai donc une classe MyClass, instanciée dans le main sous la référence myInstance. MyClass a une variable privée: nombre. si, à la place de
j'insère ce code:
j'aurai une supere erreur de compilation. Pourquoi? Parceque nombre est private. Donc, la seule et unique place où je peux l'utiliser directement est DANS la classe MyClass qui possède cette variable.
C'est un peu comme tes chaussettes: tu les porte et toi seul y a accès (ou alors je ne veux pas savoir comment tu fais!). Mais, vas tu me dire, c'est complètement con, comment je fais pour l'utiliser? Et bien de deux choses l'une: ou nombre est une variable interne, dont tu n'as pas besoin à l'extérieur, auquel cas ça ne pose aucun problème. C'est le cas de la méthode privée doStuff: elle n'est appelée et n'est appelable que dans le code de MyClass. Typiquement on utilise des méthodes privées pour des traitements internes propres à la classe, valider une donnée reçue, par exemple, ou calculer l'âge du capitaine en fonction de la dentition de son chien...
Mais tu pourais aussi avoir besoin d'utiliser la variable nombre à l'extérieur.Et là, tu vas triompher en me disant "HAHAAAA! là, nombre doit être public!". Ce à quoi je répondrai non, petit scarabée, et ce en vertu du principe d'encapsulation (que je t'invite à chercher mais qui consiste, en gros, à dire à une classe "c'est TOI qui gère tes données, personne n'y touche sans ton autorisation"). Et suivant ce principe il vaux mieux qu'on ne puisse accéder aux variables d'un objet que via des accessers. Un accesser c'est une méthode qui a pour rôle de donner accès aux variables privées, et de garder le contrôle sur ces accès. Dans MyClass, l'accesser getNombre (on apelle ça un getter) me permet de garantir que nombre sera toujours inférieur à 100. Ce serait impossible si nombre était public.
static: une méthode ou une variable static n'est pas liée à un objet mais à la classe. Concrètement ça veux dire 2 choses:
1) la méthode mais surtout la variable est commune à toutes les instances de la classe. Ainsi, tu pourais avoir
class Myclass{ private int compteur=0; public MyClass(){ compteur++; } public static int getCompteur(){ return compteur; } }Avec une telle classe, à chaque fois que tu ferait new MyClass(), tu incrémenterait compteur de 1, et ce pour chaque instance de cette classe. Et même si tu n'as jamais instancié MyClass, tu peux faire MyClass.getCompteur et recevoir 0(zéro) comme résultat: la méthode n'a aucun besoin d'un objet pour fonctionner. MAIS attention une méthode static ne peut PAS utiliser de variables et/ou de méthodes d'instance (non static).
Voila j'espère que ça t'aide un peu (si tu as eu le courage de lire la tartine).
et y a pas de bêtes questions, y a juste des questions qui attirent de bêtes réponses :p
edit: char nipeur je viens de vérifier:
public int main=2;
ça marche, main ,'est pas un mot réservé.... roh y a moyen de pourir son code avec ça...