Je n'ai trouvé de réponse satisfaisante nulle part.
Réponses
Trop de publicités?Je suppose que vous ne comprenez pas bien si vous souhaitez voir un mot clé "static" dans une classe externe.
En bref, comment allez-vous utiliser la fonctionnalité de static sur une classe externe ?
public class Outer
{
public static int x = 0 ;
}
Maintenant, vous allez faire Outer.x pour accéder à la variable statique . Cela impliquerait que x partage une seule valeur à travers tous les objets de Outer.
Maintenant que nous avons éliminé ce point, quelle serait la conséquence du mot clé static dans la classe Outer ? .
Nous ne pouvons pas déclarer une classe externe (de niveau supérieur) comme statique car le mot-clé static est destiné à fournir de la mémoire et à exécuter une logique sans créer d'objets, une classe n'a pas de logique de valeur directement, donc le mot-clé static n'est pas autorisé pour une classe externe.
Les modificateurs d'accès pris en charge pour les classes de niveau supérieur sont les suivants :
1) public
2) par défaut
3) résumé
4) finale
5) strictfp.
Raison : Classe de haut niveau
Parce que le mot-clé static est destiné à fournir de la mémoire et à exécuter la logique sans créer d'objets, une classe n'a pas de logique de valeur directement, donc le mot-clé static n'est pas autorisé pour les classes externes et surtout, comme mentionné ci-dessus, static ne peut pas être utilisé au niveau du paquet. Il est uniquement utilisé au niveau de la classe.
- Chaque fois que nous exécutons une classe, la JVM crée un objet. Tous les objets statiques sont créés dans mémoire statique et non dans la mémoire du tas. Cela signifie que nous avons le même jeu de copie pour tous les objets. Donc, si la classe supérieure est statique et que vous exécutez le pgm, il crée un objet statique et continue de se superposer à la même mémoire statique. sur la même mémoire statique, ce qui est faux.
2. nous devrions définir les membres comme statiques qui Doivent être communs à tous les objets de la classe. Puisque chaque classe est déjà commune à tous ses objets, il n'est pas nécessaire de la rendre statique. de la rendre statique pour qu'elle soit disponible à tous ses objets.
- Réponses précédentes
- Plus de réponses
12 votes
Si vous ne savez pas quelles réponses vous avez trouvées, vous obtiendrez probablement d'autres réponses insatisfaisantes.
1 votes
@BoltClock et bien j'ai trouvé ces réponses qui demandaient juste la raison d'une telle classe mais pas la raison pour laquelle elles ne peuvent pas être statiques coderanch.com/t/515963/java-programmer-SCJP/certification/ et coderanch.com/t/523014/java/java/Why-Class-cannot-declared-as et download.oracle.com/javase/tutorial/java/javaOO/nested.html
0 votes
Que signifie le fait qu'une classe imbriquée soit statique ? Comment cela s'applique-t-il à une classe de niveau supérieur ?