Grâce à des études antérieures, nous savons déjà qu'une classe peut avoir deux membres importants : les variables membres et les méthodes . En fait, une classe a également un type de membre : une classe interne. Lorsqu'une classe définit une autre classe, nous appelons une telle classe une classe interne , et la classe contenant la classe interne est appelée une classe externe de la classe interne.
1) Les variables membres de la classe externe de la classe interne sont toujours valides dans la classe interne et les méthodes de la classe interne peuvent également appeler les méthodes de la classe externe.
2) Les variables de classe et les méthodes de classe ne peuvent pas être déclarées dans le corps de classe d'une classe interne. Dans le corps de classe d'une classe externe, une classe interne peut être utilisée pour déclarer des objets en tant que membres d'une classe externe.
3) Une classe interne ne peut être utilisée que par ses classes imbriquées externes. Les autres classes ne peuvent pas utiliser la classe interne d'une certaine classe pour déclarer des objets.
Étant donné que les variables membres de la classe externe de la classe interne sont valides dans la classe interne, l'interaction entre la classe interne et la classe externe est très pratique.
Par exemple:
classRedCowForm{staticStringformName;RedCowcow;//Objet de déclaration de classe interne RedCowForm(){}RedCowForm(Strings){cow=newRedCow(88,66,2000);formNa me=s;}publicvoidshowCowMess(){cow.speak();}classRedCow{//Déclaration de la classe interne StringcowName=calf;inteight,weight,price;RedCow(inth,intw,in tp){hauteur=h;poids=w;prix=p;}voidspeak(){System.out.println(Je suis +cowName+, hauteur+hauteur+cm, poids+poids+kg, vivant à +formName);} }}publié cclassMain{publicstaticvoidmain(String[]args){RedCowFormform=newRedCowForm(dotcpp farm);form.showCowMess();form.cow.speak();}}
Les résultats en cours d'exécution sont les suivants :
Je suis un veau, je mesure 88 cm et je pèse 66 kg. Je vis dans une ferme dotcpp.
Remarque : Le nom du fichier bytecode de la classe interne généré par le compilateur Java est différent du nom de la classe ordinaire. Le format du nom du fichier bytecode correspondant à la classe interne est " nom de classe intégré $ nom de classe interne ". Par exemple : le nom du fichier de bytecode de la classe interne dans l'exemple ci-dessus doit être RedCowForm$RedCow.class.
Les classes internes peuvent être modifiées en tant que classes internes statiques. Les classes internes statiques sont un type de données statique dans les classes intégrées. Les programmes peuvent utiliser des classes internes statiques dans d'autres classes pour créer des objets.
D'accord, tout le monde peut expérimenter sur l'ordinateur et digérer et absorber le contenu de cette section.