Méthode statique ne peut pas accéder aux membres de l'instance d'une classe
De Liang de la 9ème édition Introduction à la Programmation Java il déclare, "Une méthode statique ne peut pas accéder aux membres de l'instance d'une classe, d'" (page 312). Je ne vois pourquoi un membre de l'instance d'une classe aurez besoin d'accéder à une méthode (qui peut être statique), mais pourquoi une méthode de besoin d'accéder à un membre de l'instance? Pour moi, "l'accès" signifie "accès par la voie de l'opérateur point." En d'autres termes:
Class myClass = new Class();
myClass.someStaticMethod();
de sens, considérant ce qui suit:
someNonStaticMethod.myClass
ou
someStaticMethod.myClass
ne le fait pas. Est le someNonStaticMethod.myClass syntaxe autorisée? Je ne crois pas que j'ai jamais vu une telle mise en forme. Si il n'est pas permis, pourquoi mentionner que les méthodes statiques ne peuvent pas accéder les membres de l'instance d'une classe?
S'il vous plaît aider soulever ma confusion.
-DI
public static void someStaticMethod() { someInstanceMethod(); }
est pas valide.Par la manière, le moyen privilégié pour accéder à une méthode statique est, à l'aide de votre exemple,
Class.someStaticMethod()
, pas par l'intermédiaire d'une instance de la classe (c'est à dire votre myClass.someStaticMethod();
)Le chien Est myClass.someStaticMethod() même possible?
Oui, c'est possible pour appeler la méthode statique de cette façon, mais c'est vraiment juste une "fonctionnalité" de la syntaxe Java qui permet à l'être. Faire de cette façon peut être déroutant, cependant, qu'il ressemble à un exemple appel de méthode, même si elle n'est pas, et pour cette raison, doit être évitée.
OriginalL'auteur Digital Impermanence | 2014-12-02
Vous devez vous connecter pour publier un commentaire.
Accéder à un membre de l'instance signifie accéder à un champ ou de l'attribut de l'instance, de ne pas l'instance elle-même, car ce ne serait pas la compilation. Un point ne signifient littéralement "l'accès" à la manière exacte que vous en pensez et je suppose que c'est la source de la confusion que vous avez. Le point est utilisé pour appeler une méthode sur un objet précis (voir ce lien) ou pour accéder à un champ d'un objet (ou de la classe si le champ est statique).
Par exemple, en supposant que la classe est définie comme suit:
Donc dans la méthode
foo
, vous ne pouvez pas faire référencex
parce que c'est un champ de membre deMyClass
qui est lié à un instance deMyClass
.Voir aussi La Compréhension Des Membres De La Classe de comprendre la différence entre les membres et les membres de l'instance.
OriginalL'auteur manouti
Vous ne peut pas accéder aux variables d'instance de méthodes statiques.
Vous pouvez accéder aux variables d'instance de méthodes d'instance.
Vous ne devez pas accéder à des variables statiques à partir de méthodes d'instance à l'aide de
this
.Vous pouvez toujours accéder à des variables statiques. Vous devez utiliser le nom de la classe.
OriginalL'auteur Francesco Menzani
Une méthode statique ne peut pas se référer à un non-Statique champ d'instance d'une classe.
Si vous voulez comprendre pourquoi: Une méthode statique peut être appelée sans avoir une instance d'une classe, donc un non-statique n'existerait pas de toute façon, lorsque la méthode est appelée.
OriginalL'auteur javaHunter
Il est en train de parler à ce sujet:
La raison pour laquelle une méthode statique ne peut pas accéder variable d'instance est parce que les références statiques de la classe et non une instance de la classe donc il n'y a pas de variable d'instance à l'accès. Test n'existent que lorsque
new MyClass
est utilisé aujourd'hui en test. Mais si je l'appelle méthode statiqueMyClass.getTest()
il n'y a pastest
variable d'instance créée.OriginalL'auteur brso05
il est possible d'accéder aux variables d'instance dans les méthodes statiques par la création d'objets
}
OriginalL'auteur Muli vinod