J'étais en train de lire le texte qui m'était donné dans mon manuel et je ne suis pas vraiment sûr de comprendre ce qu'il dit. Cela me dit essentiellement que les méthodes statiques ou les méthodes de classe incluent le mot-clé "modificateur" static. Mais je ne sais pas vraiment ce que ça veut dire?
Quelqu'un pourrait-il m'expliquer en termes très simples ce que sont les méthodes statiques ou de classe?
Aussi, pourrais-je obtenir une explication simple sur ce que sont les méthodes d'instance?
Voici ce qu'ils me donnent dans le manuel:
Il y a des implications pratiques importantes de la présence ou de l'absence du modificateur statique. Une méthode de classe publique peut être appelée et exécutée dès que Java traite la définition de la classe à laquelle elle appartient. Ce n'est pas le cas pour une méthode d'instance. Avant qu'une méthode d'instance publique puisse être appelée et exécutée, une instance doit être créée de la classe à laquelle elle appartient. Pour utiliser une méthode de classe publique, vous avez juste besoin de la classe. D'autre part, avant de pouvoir utiliser une méthode d'instance publique, vous devez avoir une instance de la classe.
La manière dont une méthode statique est appelée dans la définition d'une autre méthode varie selon que les deux méthodes appartiennent ou non à la même classe. Dans l'exemple ci-dessus, factorial et main sont deux méthodes de la classe MainClass. En conséquence, l'invocation de factoriel dans la définition de main fait simplement référence au nom de la méthode, "factorial".
la source
static
(une classe, une méthode ou un champ) n'appartient vraiment à rien, il traîne juste dans la classe à des fins d'organisation.Les méthodes et les variables qui ne sont pas déclarées comme statiques sont appelées méthodes d'instance et variables d'instance. Pour faire référence aux méthodes et aux variables d'instance, vous devez d'abord instancier la classe, ce qui signifie que vous devez d'abord créer un objet de cette classe.Pour les statiques, vous n'avez pas besoin d'instancier la classe, vous pouvez accéder aux méthodes et aux variables avec le nom de la classe en utilisant le signe de période lequel est dedans (.)
par exemple:
Person.staticMethod(); //accessing static method.
pour une méthode non statique, vous devez instancier la classe.
Person person1 = new Person(); //instantiating person1.nonStaticMethod(); //accessing non-static method.
la source
Méthodes statiques, les variables appartiennent à toute la classe, pas seulement à une instance d'objet. Méthode statique, variable est associée à la classe dans son ensemble plutôt qu'à des instances spécifiques d'une classe. Chaque objet partagera une copie commune des méthodes statiques, des variables. Il n'y a qu'une seule copie par classe, quel que soit le nombre d'objets créés à partir de celle-ci.
la source
Différence entre les méthodes statiques et les méthodes d'instance
Les méthodes d'instance sont des méthodes qui nécessitent la création d'un objet de sa classe avant de pouvoir être appelé. Les méthodes statiques sont les méthodes en Java qui peuvent être appelées sans créer d'objet de classe.
La méthode statique est déclarée avec le mot-clé static. La méthode d'instance n'est pas avec un mot-clé statique.
Méthode statique signifie qui existera comme une seule copie pour une classe. Mais les méthodes d'instance existent sous forme de copies multiples en fonction du nombre d'instances créées pour cette classe.
Les méthodes statiques peuvent être appelées à l'aide d'une référence de classe. Les méthodes d'instance ou non statiques sont appelées à l'aide d'une référence d'objet.
Les méthodes statiques ne peuvent pas accéder directement aux méthodes d'instance et aux variables d'instance. La méthode d'instance peut accéder directement aux variables statiques et aux méthodes statiques.
Référence: geeksforgeeks
la source
Méthodes d'instance => invoquées sur une instance spécifique d'une classe spécifique. La méthode veut savoir sur quelle classe elle a été invoquée. La façon dont cela se passe il y a un paramètre invisible appelé «ceci». À l'intérieur de «this», nous avons des membres de la classe d'instance déjà définis avec des valeurs. «Ceci» n'est pas une variable. C'est une valeur, vous ne pouvez pas la changer et la valeur fait référence au destinataire de l'appel. Ex: Vous appelez des réparateurs (méthode de l'instance) pour réparer votre téléviseur (programme réel). Il est livré avec des outils (paramètre «this»). Il est livré avec des outils spécifiques nécessaires pour réparer la télévision et il peut également réparer d'autres choses.
Dans les méthodes statiques => il n'y a pas de «ceci». Ex: le même réparateur (méthode statique). Lorsque vous l'appelez, vous devez spécifier quel réparateur appeler (comme un électricien). Et il viendra réparer votre téléviseur uniquement. Mais, il n'a pas d'outils pour corriger d'autres choses (il n'y a pas de paramètre «this»).
Les méthodes statiques sont généralement utiles pour les opérations qui ne nécessitent aucune donnée d'une instance de la classe (à partir de «this») et peuvent exécuter leur objectif en utilisant uniquement leurs arguments.
la source
Le comportement d'un objet dépend des variables et des méthodes de cette classe. Lorsque nous créons une classe, nous créons un objet pour elle. Pour les méthodes statiques, nous n'en avons pas besoin car les méthodes statiques signifient que tous les objets auront la même copie, donc il n'y a pas besoin d'un objet. par exemple:
Dans la méthode d'instance, chaque objet aura un comportement différent et devra donc appeler la méthode en utilisant l'instance d'objet. par exemple:
Myclass x = new Myclass(); x.get();
la source
Si l'état d'une méthode n'est pas censé être changé ou qu'elle n'utilisera aucune variable d'instance.
Vous voulez appeler la méthode sans instance.
Si cela ne fonctionne que sur les arguments qui lui sont fournis.
Les fonctions utilitaires sont un bon exemple de méthodes statiques. ie math.pow (), cette fonction ne va pas changer l'état pour différentes valeurs. C'est donc statique.
la source
En bref, les méthodes statiques et les variables statiques sont au niveau de la classe alors que les méthodes d'instance et les variables d'instance sont au niveau de l'instance ou de l'objet.
Cela signifie que chaque fois qu'une instance ou un objet (en utilisant new ClassName ()) est créé, cet objet conservera sa propre copie des variables instace. Si vous avez cinq objets différents de la même classe, vous aurez cinq copies différentes des variables d'instance. Mais les variables et méthodes statiques seront les mêmes pour ces cinq objets. Si vous avez besoin de quelque chose de commun à utiliser par chaque objet créé, rendez-le statique. Si vous avez besoin d'une méthode qui n'aura pas besoin de données spécifiques à un objet pour fonctionner, rendez-la statique. La méthode statique ne fonctionnera qu'avec une variable statique ou retournera des données sur la base des arguments passés.
class A { int a; int b; public void setParameters(int a, int b){ this.a = a; this.b = b; } public int add(){ return this.a + this.b; } public static returnSum(int s1, int s2){ return (s1 + s2); } }
Dans l'exemple ci-dessus, lorsque vous appelez add () comme:
A objA = new A(); objA.setParameters(1,2); //since it is instance method, call it using object objA.add(); // returns 3 B objB = new B(); objB.setParameters(3,2); objB.add(); // returns 5 //calling static method // since it is a class level method, you can call it using class itself A.returnSum(4,6); //returns 10 class B{ int s=8; int t = 8; public addition(int s,int t){ A.returnSum(s,t);//returns 16 } }
En première classe, add () retournera la somme des données passées par un objet spécifique. Mais la méthode statique peut être utilisée pour obtenir la somme de n'importe quelle classe non indépendante de toute instance ou objet spécifique. Par conséquent, pour les méthodes génériques qui n'ont besoin que d'arguments pour fonctionner, elles peuvent être rendues statiques pour que tout reste SEC.
la source
Méthode d'instance vs méthode statique
La méthode d'instance peut accéder directement aux méthodes d'instance et aux variables d'instance.
La méthode d'instance peut accéder directement aux variables statiques et aux méthodes statiques.
Les méthodes statiques peuvent accéder directement aux variables statiques et aux méthodes statiques.
Les méthodes statiques ne peuvent pas accéder directement aux méthodes d'instance et aux variables d'instance. Ils doivent utiliser la référence à l'objet. Et la méthode statique ne peut pas utiliser ce mot-clé car il n'y a pas d'instance à laquelle faire référence.
la source
Le modificateur statique placé devant une fonction implique qu'une seule copie de cette fonction existe. Si le modificateur statique n'est pas placé devant la fonction, une nouvelle copie de cette fonction est effectuée avec chaque objet ou instance de cette classe. :) Il en va de même pour les variables.
la source