Pourquoi ne puis-je pas utiliser “super” variable d'un contexte statique, même si “super” se réfère à la classe parent et non PAS une instance de classe, contrairement à “cela”?
Je parle le langage java.
Variable "ce", lorsqu'il est utilisé à l'intérieur d'une classe, se réfère à l'instance courante de la classe, ce qui signifie que vous ne pouvez pas utiliser "présent" à l'intérieur d'une méthode statique.
Mais "super", lorsqu'il est utilisé à l'intérieur d'une classe, se réfère à la super-classe de la classe, une instance de la super-classe, ce qui devrait signifier que vous pouvez utiliser "super" à l'intérieur d'une méthode statique. Mais il s'avère que vous ne pouvez pas.
Une explication possible serait de dire que le "super" fait également référence à une instance de la classe mère, mais je ne vois pas pourquoi il devrait...
Ne le savais pas. Je suis nouveau ici, je vais vous parler maintenant.
Er, par la façon dont exactement comment puis-je accepter des réponses?
Parce que vous avez tort. "super" t se référer à une instance.
OriginalL'auteur PrashanD | 2013-01-01
Vous devez vous connecter pour publier un commentaire.
Ici est la section du JLS sur le
super
mot-clé:http://docs.oracle.com/javase/specs/jls/se7/html/jls-15.html#jls-15.11.2
Dans les deux cas, il est clair qu'une instance de l'objet est nécessaire.
Aussi, un contexte statique est un peu différent à partir d'une instance de contexte, comme une classe ne peut pas remplacer les méthodes statiques, de seulement les masquer.
OriginalL'auteur Sean Patrick Floyd
Non,
super
fait référence à une instance -- la même instance quethis
désigne l'objet courant. C'est juste une façon de faire référence à des méthodes et des champs définis dans la super-classe qui sont remplacés ou cachés dans la classe en cours.Ainsi, il semble super fait référence à une instance en raison de la JLS dit.
MAIS, pour répondre à votre autre question, super la référence à une instance de ne pas entraver sa capacité à accéder à des variables statiques de la super-classe (pour la même raison, les méthodes d'instance peut accéder à des variables statiques de la super-classe - les variables d'Instance ne peut pas être appelé à partir d'un contexte statique, mais les variables statiques PEUVENT être soumises à partir d'un non-contexte statique).
OriginalL'auteur Sean Owen
Vous ne pouvez pas utiliser
super
à partir d'un contexte statique pour la même raison, vous ne pouvez pas utiliserthis
dans un contexte statique. Dans les deux cas, le mot fait référence à une instance.Dans un contexte statique, vous pouvez toujours utiliser le nom de la super-classe de manière explicite:
OriginalL'auteur Ted Hopp
Super est un non statique de la variable et non statique entité ne peut pas être accessible à partir de contexte statique.
OriginalL'auteur Tmc