Dans cet article, nous allons découvrir les méthodes statiques et les méthodes d'instance en Java.
Méthodes d'instance Java
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ée. Pour invoquer une méthode d'instance, nous devons créer un objet de la classe dans laquelle la méthode est définie.
public void geek(String name) { // code to be executed.... } // Return type can be int, float String or user defined data type.>
Allocation de mémoire de la méthode d'instance
Ces méthodes elles-mêmes sont stockées dans l'espace de génération permanente du tas (valable jusqu'à Java 7 uniquement, désormais remplacé par le métaespace à partir de Java 8 et au-delà avec une efficacité améliorée) mais les paramètres (arguments qui leur sont transmis) et leurs variables locales et la valeur à être retournés sont alloués dans la pile. Ils peuvent être appelés au sein de la même classe dans laquelle ils résident ou à partir des différentes classes définies soit dans le même package, soit dans d'autres packages en fonction du Type d'accès fourni à la méthode d’instance souhaitée.
Les points importants:
- Les méthodes d'instance appartiennent à l'objet de la classe, pas à la classe, c'est-à-dire qu'elles peuvent être appelées après avoir créé l'objet de la classe.
- Les méthodes d'instance ne sont pas stockées instance par instance, même avec les méthodes virtuelles. Ils sont stockés dans un seul emplacement mémoire et ils savent uniquement à quel objet ils appartiennent car ce pointeur est transmis lorsque vous les appelez.
- Ils peuvent être remplacés puisqu'ils sont résolus à l'aide de liaison dynamique lors de l'exécution.
Vous trouverez ci-dessous l'implémentation de l'accès à la méthode d'instance :
Java
liste immuable Java
// Example to illustrate accessing the instance method .> import> java.io.*;> class> Foo {> > String name => ''> ;> > // Instance method to be called within the> > // same class or from a another class defined> > // in the same package or in different package.> > public> void> geek(String name) {> this> .name = name; }> }> class> GFG {> > public> static> void> main(String[] args)> > {> > // create an instance of the class.> > Foo ob => new> Foo();> > // calling an instance method in the class 'Foo'.> > ob.geek(> 'techcodeview.com'> );> > System.out.println(ob.name);> > }> }> |
âge rekha
>
>Sortir
techcodeview.com>
Méthodes statiques Java
Les méthodes statiques sont les méthodes Java qui peuvent être appelées sans créer d’objet de classe. Ils sont référencés par le le nom de la classe lui-même ou une référence à l'objet de cette classe.
disquette
public static void geek(String name) { // code to be executed.... } // Must have static modifier in their declaration. // Return type can be int, float, String or user defined data type.>
Allocation de mémoire des méthodes statiques
Ils sont stockés dans l'espace de tas de génération permanente car ils sont associés à la classe dans laquelle ils résident et non aux objets de cette classe. Mais leurs variables locales et les arguments qui leur sont transmis sont stockés dans la pile. Puisqu’ils appartiennent à la classe, ils peuvent donc être appelés sans créer l’objet de la classe.
Les points importants:
- Les méthodes statiques sont associées à la classe dans laquelle elles résident, c'est-à-dire qu'elles sont appelées sans créer d'instance de la classe, c'est-à-dire Nom de classe.nom de méthode (args) .
- Ils sont conçus dans le but d'être partagés entre tous les objets créés à partir de la même classe.
- Les méthodes statiques ne peuvent pas être remplacées, car elles sont résolues à l'aide de liaison statique par le compilateur au moment de la compilation. Cependant, nous pouvons déclarer des méthodes du même nom statique à la fois superclasse et sous-classe , mais il s'appellera Méthode de masquage car la méthode de classe dérivée masquera la méthode de classe de base.
Ci-dessous l'illustration de l'accès aux méthodes statiques :
Java
// Example to illustrate Accessing> // the Static method(s) of the class.> import> java.io.*;> class> Geek {> > public> static> String geekName => ''> ;> > public> static> void> geek(String name)> > {> > geekName = name;> > }> }> class> GFG {> > public> static> void> main(String[] args)> > {> > // Accessing the static method geek()> > // and field by class name itself.> > Geek.geek(> 'vaibhav'> );> > System.out.println(Geek.geekName);> > // Accessing the static method geek()> > // by using Object's reference.> > Geek obj => new> Geek();> > obj.geek(> 'mohit'> );> > System.out.println(obj.geekName);> > }> }> |
>
obtenir une connexion
>Sortir
vaibhav mohit>
Note:
Les variables statiques et leurs valeurs (primitives ou références) définies dans la classe sont stockées dans PermGen espace de mémoire.
Questions fréquemment posées
1. Que se passe-t-il si une variable statique fait référence à un objet ?
static int i = 1; static Object obj = new Object();>Dans la première ligne, la valeur 1 serait stockée dans la section PermGen. En deuxième ligne, l'obj de référence serait stocké dans la section PermGen et l'objet auquel il fait référence serait stocké dans la section tas.
2. Quand utiliser les méthodes statiques ?
- Lorsque vous disposez de code pouvant être partagé entre toutes les instances de la même classe, placez cette partie du code dans une méthode statique.
- Ils sont essentiellement utilisés pour accéder aux champs statiques de la classe.
3. Différence entre la méthode d'instance et la 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 une référence à l’objet. Et la méthode statique ne peut pas être utilisée ce mot-clé car il n’y a aucune instance à laquelle « ceci » peut faire référence.