Je sais que les méthodes statiques java ne peuvent utiliser que des variables statiques et des méthodes statiques, mais que les méthodes non statiques peuvent utiliser des variables et des méthodes non statiques. Y at-il une explication pourquoi les méthodes statiques peuvent seulement accéder aux variables/méthodes statiques? et ne peut pas accéder à des méthodes et des variables non statiques?Méthodes et variables statiques
Répondre
Pour accéder à des méthodes/champs non statiques, vous avez besoin d'une instance de la classe.
... par définition. –
Mais l'OP veut savoir * pourquoi *. Est-ce une règle arbitraire ou y a-t-il une raison? Il nous appartient d'expliquer "oui, il y a une raison très importante". A MON HUMBLE AVIS... – paulsm4
Si l'on comprend ce que 'static' signifie réellement (au lieu de simplement apprendre les règles), alors la raison devrait être évidente. –
Think about it:
a) Supposons que vous étiez une méthode statique.
b) Vous existez indépendamment de toute instance d'objet. Vous existez même s'il n'y a pas d'instance de classe.
c) Vous souhaitez accéder à une variable non statique. Une variable qui existe dans ONE et une seule instance d'objet - une variable spécifique à cette instance d'objet PARTICULAR.
d) Quelle variable non-statique utiliserez-vous ??? Méthodes statiques PEUT accéder à des membres non-statiques de classes ... à condition qu'ils le fassent via une référence de classe.
Sinon - pas de référence de classe - pas d'accès.
Avez-vous du sens? ;)
Lorsque vous instanciez une classe, elle est chargée dans un tas ou une pile. Dans ce cas, votre application contient des références à ces parties d'instances de mémoire. Cependant, les méthodes statiques ne sont que des fonctions chargées dans la mémoire. C'est pourquoi, si votre méthode statique veut accéder à une variable ou à une méthode de classe, elle ne peut pas simplement l'appeler car il peut y avoir plusieurs références à cette classe dans le tas contrairement à une seule et unique méthode statique.
Si vous souhaitez appeler une méthode statique à partir d'une méthode statique, vous devez utiliser l'instance (ou en créer une) pour cette classe afin de pouvoir définir la référence de classe réelle.
Dans le contexte statique, ce mot-clé n'est pas accessible. nous ne pouvons pas utiliser ce mot-clé dans le contexte statique. Les variables d'instance sont initialisées lorsque le constructeur appelle. Mais les variables statiques sont initialisées lors du chargement de la classe. lors du chargement de la classe, les variables d'instance ne sont toujours pas identifiées pendant ce temps si on utilise des variables d'instance en contexte statique cela conduit à une erreur de temps de compilation car elles ne sont pas identifiées à ce moment
- 1. python variables statiques et les méthodes
- 2. champs statiques et méthodes
- 3. Les méthodes non statiques peuvent-elles modifier les variables statiques
- 4. Méthodes statiques ou non? Variables globales?
- 5. Méthodes statiques Java accédant aux variables privées
- 6. variables statiques dans les méthodes Objective-C
- 7. variables et fonctions statiques
- 8. INotifyPropertyChanged et variables statiques
- 9. Méthodes statiques et méthodes d'instance en mémoire
- 10. méthodes statiques/champs et WCF
- 11. type hinting et méthodes statiques
- 12. MVVM ViewModel et méthodes statiques
- 13. Méthodes statiques et multi-threads
- 14. méthodes statiques et tests unitaires
- 15. Pourquoi les classes statiques ne peuvent-elles pas avoir des méthodes et des variables non statiques?
- 16. Java: Méthodes parentales accédant aux variables statiques des sous-classes?
- 17. Variables et méthodes
- 18. Variables statiques/de classe et GUI
- 19. Blocs synchronisés pour les méthodes statiques et non statiques
- 20. Syntaxe Java pour les méthodes statiques et non statiques
- 21. Variables statiques PHP
- 22. Variables statiques, compilation séparée
- 23. méthodes statiques synchronisées
- 24. Méthodes statiques dans React
- 25. Méthodes statiques dans ASP.NET
- 26. Méthodes statiques et sécurité des threads
- 27. différence entre l'objet et les méthodes statiques
- 28. C# Les méthodes statiques et console
- 29. Eclipse Xtend et les méthodes statiques
- 30. Vars Clojure et méthodes statiques Java
duplication possible de [Ne peut être référencée à partir d'un fonction statique?] (http://stackoverflow.com/questions/8029845/cannot-be-referenced-from-a-static-function) –
ce n'est pas un doublon, le contenu de ma question est complètement différent. – KyelJmD
Les réponses à cette question s'appliquent également bien à cette question. –