web-dev-qa-db-fra.com

Qu'est-ce qu'une instance en Java?

Quelle est la différence entre un objet, une instance et une référence? Ils disent qu'ils doivent créer une instance pour leur application? Qu'est-ce que ça veut dire?

44
priya

Un objet et une instance sont la même chose .

Personnellement, je préfère utiliser le mot "instance" pour désigner un objet spécifique d'un type spécifique, par exemple "une instance de type Foo". Mais quand on parle d'objets en général, je dirais "objets" plutôt que "instances". 

Une référence fait référence à un objet spécifique ou peut être une référence null.


Ils disent qu'ils doivent créer une instance pour leur application. Qu'est-ce que ça veut dire?

Ils signifient probablement que vous devez écrire quelque chose comme ceci:

Foo foo = new Foo();

Si vous n'êtes pas sûr du type à instancier, vous devez contacter les développeurs de l'application et demander un exemple plus complet.

68
Mark Byers

"instance à une application" ne veut rien dire.

"objet" et "instance" sont la même chose. Il existe une "classe" qui définit la structure et les instances de cette classe (obtenues avec new ClassName()). Par exemple, il y a la classe Car, et il existe des exemples avec différentes propriétés comme le kilométrage, la vitesse maximale, la puissance, la marque, etc.

La référence est, dans le contexte Java, une variable * - c'est quelque chose qui pointe vers un objet/une instance. Par exemple, String s = null; - s est une référence, qui ne fait actuellement référence à aucune instance, mais peut référencer une instance de la classe String.

* Jon Skeet a noté la différence entre une variable et une référence. Voir son commentaire. Il existe une distinction importante concernant le fonctionnement de Java lorsque vous appelez une méthode - valeur transmise. 

La valeur de s est une référence. Il est très important de distinguer les variables et les valeurs, les objets et les références.

10
Bozho

Je pense que Object = Instance. La référence est un "lien" vers un objet.

Car c = new Car();

la variable c stocke une référence à un objet de type Car.

8
Voooza

Lorsque vous utilisez le mot clé new, par exemple JFrame j = new JFrame();, vous créez une instance de la classe JFrame

L'opérateur new instancie un classe en allouant de la mémoire pour un nouveau fichier object et en renvoyant une référence à cette mémoire.
Note: L'expression "instanciation d'une classe" signifie la même chose que "créer un objet." Lorsque vous créez un objet, vous créez un "instance" d'une classe, donc "instancier" une classe.

Regardez ici
Création d'objets


Les types de la programmation Java langue sont divisés en deux catégories: primitive types et reference types.
Les types reference sont des types class, des types interface et array types.
Il y a aussi un spécial null type.
Un objet est un Instance créée dynamiquement d'un class type ou un créé dynamiquement array.
Les valeurs de reference type sont des références à des objets.

Reportez-vous à Types, valeurs et variables pour plus d'informations 

7
Alpine
Computer c= new Computer()

Ici, un objet est créé à partir de la classe Computer. Une référence nommée c permet au programmeur d'accéder à l'objet.

5
vijay

La differnece principale est quand vous dites ClassName obj = null; vous créez juste un objet pour cette classe. Ce n'est pas une instance de cette classe.

Cette instruction va simplement allouer de la mémoire pour les variables statiques meber, pas pour les variables membres normales.

Mais quand vous dites ClassName obj = new ClassName (); vous créez une instance de la classe. Cet arrêt va allouer en mémoire toutes les variables membres.

4
Kumar

fondamentalement objet et instance sont les deux mots utilisés de manière interchangeable . Une classe est un modèle pour un objet et un objet est une instance d'une classe.

3
karunesh pal

"créer une instance d'une classe" que diriez-vous, "vous prenez une classe et créez une nouvelle variable de cette classe qui va changer en fonction d'une entrée qui change"

Classe dans la bibliothèque appelée Nacho

variable Libre pour contenir "l'instance" qui changera

Nacho Libre = new Nacho (Variable, Scanner Input ou tout ce qui se passe ici, c’est l’endroit où les modifications sont acceptées, puis met la valeur dans "Libre" du côté gauche du signe égal (vous savez que "Nacho Libre = new Nacho ( Scanner.in) "" Nacho Libre "est à gauche de = (ce n'est pas une conversation technique, c'est ma façon de l'expliquer)

Je pense que cela vaut mieux que de dire "instance de type" ou "instance de classe". Le problème, c’est qu’il faut simplement préciser le détail. «L’instance du type ou de la classe» n’est pas assez bon pour le débutant ..... wow, c’est comme une virelangue et votre cerveau ne peut pas se concentrer sur les virelangues. très bien .... ce "exemple" Word est très énervant et le simple son de celui-ci me rend fou ... il demande plus de détails ... il demande à être mieux décomposé. Je devais google ce que "instance" signifiait juste pour obtenir mes repères ..... essayez de dire "instance de classe" à votre grand-mère .... beurk!

1
Whattheheck

La signification littérale de l'instance est "un exemple ou une occurrence unique de quelque chose". qui est très proche de la terminologie Instance in Java.

Java suit le chargement dynamique, qui n'est pas comme le langage C où tout le code est copié dans la RAM au moment de l'exécution. Permet de capturer cela avec un exemple.

   class A
    {
    int x=0;
    public static void main(String [] args)    
     {
    int y=0;
    y=y+1;
    x=x+1;
     }   

    }

Laissez-nous compiler et exécuter ce code.

étape 1: javac A.class (le fichier .class généré est du code octet) 

étape 2: Java A (le fichier .class est converti en code exécutable)

Au cours de l'étape 2, la méthode main et les éléments statiques sont chargés dans la RAM pour exécution. Dans le scénario ci-dessus, aucun problème jusqu'à la ligne y = y + 1. Mais chaque fois que x = x + 1 est exécuté, l'erreur d'exécution est renvoyée car la machine virtuelle Java ne sait pas quel est le x déclaré en dehors de la méthode principale (non statique).

Donc, si par certains moyens le contenu du fichier .class est disponible dans la mémoire pour que le CPU s'exécute, il n'y a plus de problème. 

Cela se fait en créant l'objet et le mot cléNEWfait ce travail.

" Le concept de réservation de mémoire dans RAM pour le contenu du disque dur (ici fichier .class) au moment de l'exécution s'appelle Instance "

L'objet est également appelé l'instance de la classe.

1

Les objets, qui sont aussiles instances appelées, sont des éléments autonomes d'un programme avec des caractéristiques et des données connexes. Dans la plupart des cas, vous utilisez la classe uniquement pour créer des instances, puis vous travaillez avec ces instances. 

-Définition tirée du livre "Sams Teach Yourself Java in 21 days".

Supposons que vous avez 2 classes, public class MainClass et public class Class_2 et que vous souhaitez créer une instance de Class_2 in MainClass. 

C'est un moyen très simple et basique de le faire:

public MainClass()      /*******this is the constructor of MainClass*******/

{

 Class_2 nameyouwant = new Class_2();

}

J'espère que ça aide!

1
P. Soutzikevich