Quelle est la différence entre une instance et un objet?


92

Quelle est la différence entre une instance et un objet? Y a-t-il une différence ou pas?


10
Peut-être pouvez-vous déduire du message d'erreur bien connu «La référence d'objet n'est pas définie sur une instance d'un objet ». : ->
herzmeister

De la spécification JVM: "Un objet est soit une instance de classe allouée dynamiquement, soit un tableau." Docs.oracle.com/javase/specs/jvms/se8/html/jvms-2.html
yfklon

StackOverFlow Je viens de donner une brève description de la différence entre l'objet et l'instance J'espère que cela aide
Pushkarraj Pujari

1
Un objet est une instance d'une classe. C'est tout ce qu'on peut en dire.
Marquis of Lorne

Réponses:


49

Une instance est un objet en mémoire. Fondamentalement, vous créez des objets et les instanciez lorsque vous les utilisez.

Voici un bel article sur Classes Vs Objects Vs Instances, il parle Java mais cela s'applique à tous les OO.

http://alfredjava.wordpress.com/2008/07/08/class-vs-object-vs-instance/


27
Ce billet de blog n'explique rien.
Koray Tugay

donc vous voulez dire objet == classe? ou vous voulez dire la classe chargée et devient objet et objet instancié pour devenir instance? ne répondez-vous pas à confusion?
p_champ

Pensez à la classe comme à une définition. Lorsque vous instanciez la classe, vous avez l'objet qui peut ensuite être utilisé. Cet objet est physiquement représenté en mémoire.
Dustin Laine

@Dustin Laine la différence n'est toujours pas claire. Pouvez vous me donner un coup de main?
Pie

@DustinLaine La question pose la différence entre «instance» et «objet». Cependant, dans cette réponse, ce qui a été expliqué est le processus d '«instanciation» d'une classe pour obtenir un «objet». Votre message et votre commentaire ne correspondent pas. Dans l'article, il est mentionné qu'une «instance» est un objet en mémoire. Cependant, dans le commentaire, il est mentionné qu'après avoir instancié la classe, vous obtenez l '«objet», qui est représenté en mémoire. C'est un peu ambigu.
Srishti le

56

L'instance et l'objet proviennent de la programmation orientée objet .

Pour certains langages de programmation comme Java, C ++ et Smalltalk, il est important de décrire et de comprendre le code. Dans d'autres langages utilisés dans la programmation structurée, ce concept n'existe pas.

Ceci est une vue de la programmation structurelle. Il n'y a pas de réelle différence significative qui devrait vous occuper trop de votre temps. Il peut y avoir un langage sophistiqué sur lequel certaines personnes peuvent prendre beaucoup d'espace pour écrire, mais en fin de compte, en ce qui concerne un codeur, un développeur, un programmeur, un architecte, une instance d'une classe et un objet signifie la même chose et peut souvent être utilisé de manière interchangeable. Je n'ai jamais rencontré personne dans ma carrière qui serait difficile et passerait une demi-heure à essayer de souligner les différences, car il n'y en a vraiment pas. Le temps peut être mieux consacré à d'autres efforts de développement.

MISE À JOUR En ce qui concerne Swift, voici ce que préfère Apple qui a inventé Swift:

Une instance d'une classe est traditionnellement appelée objet. Cependant, les classes et structures Swift sont beaucoup plus proches en termes de fonctionnalités que dans d'autres langages, et une grande partie de ce chapitre décrit les fonctionnalités qui peuvent s'appliquer aux instances d'une classe ou d'un type de structure. Pour cette raison, le terme instance plus général est utilisé.


20

Excellente question.

Je vais vous l'expliquer de la manière la plus simple possible: disons que vous avez 5 pommes dans votre panier. Chacune de ces pommes est un objet de type Apple, qui présente certaines caractéristiques (c'est-à-dire grosse, ronde, pousse sur les arbres).

En termes de programmation, vous pouvez avoir une classe appelée Apple, qui a des variables size: big, shape: round, habitat: pousse sur les arbres. Pour avoir 5 pommes dans votre panier, vous devez instancier 5 pommes. Apple apple1, Apple apple2, Apple apple3 etc....

Alternativement: les objets sont les définitions de quelque chose, les instances sont les choses physiques.

Est-ce que ça a du sens?


60
Ce n'est pas le cas. :) "Les objets sont les définitions de quelque chose" Ce que vous appelez les objets ici sont des classes.
T-Gergely

11

Instance: instance signifie simplement créer une référence (copie).

objet: signifie quand l'emplacement mémoire est associé à l'objet (est une entité d'exécution de la classe) en utilisant l'opérateur new.

En termes simples, Instance fait référence à la copie de l'objet à un moment particulier tandis que object fait référence à l'adresse mémoire de la classe.


1
dire qu'une instance est une référence à un objet a vraiment clarifié les choses pour moi.
John C

2
@JohnC Ça ne devrait pas, parce que ce n'est pas correct. Un objet est une instance d'une classe. C'est tout ce qu'on peut en dire.
Marquis of Lorne

8

Disons que vous construisez des chaises.

Le diagramme qui montre comment construire une chaise et l'assembler correspond à une classe de logiciel.

Disons que vous construisez cinq chaises selon le modèle de ce diagramme. De même, vous pouvez construire cinq objets logiciels selon le modèle d'une classe.

Chaque chaise a un numéro unique gravé dans le fond du siège pour identifier chaque chaise spécifique. La chaise 3 est un exemple d'un modèle de chaise. De même, l'emplacement de mémoire 3 peut contenir une instance d'un motif logiciel.

Ainsi, une instance (chaise 3) est une manifestation unique et spécifique d'un modèle de chaise.


2
Un objet est une instance d'une classe. Une instance n'est pas une instance d'un objet. La réponse n'a pas de sens.
Marquis of Lorne

1
Wow, après neuf ans, quelqu'un a finalement signalé la faille dans mon explication. Merci! Mieux maintenant?
Brian Showalter

7

Objet :

C'est un terme générique, c'est un ensemble de logiciels qui a un état (variables) et un comportement (méthodes)

Classe :

Une impression bleue (modèle) pour une instance d'objet - c'est un objet unique, par exemple vous créez un objet deux fois ce que cela signifie est que vous avez créé deux instances

Laissez-moi vous donner un exemple

Class student()
{
   private string firstName;
  public student(string fname)
  {
    firstName=fname;
  }
  Public string GetFirstName()
  {
    return firstName;
  }
}

Exemple d'objet :

Student s1 = nouvel étudiant ("Martin"); Student s2 = nouvel étudiant ("Kumar");

Les s1, s2 ont l'objet de la classe Student

Instance :

s1 et s2 sont des instances d'objet étudiant, les deux sont uniques .

il peut également être appelé comme référence .

fondamentalement, s1 et s2 sont des variables auxquelles un objet est attribué


1
Un objet est une instance d'une classe.
Marquis of Lorne

7

Les objets et les instances sont pour la plupart identiques; mais il y a une très petite différence. Si Carest une classe, 3 Cars sont 3 objets différents. Tous ces objets sont des instances. Donc ces 3 voitures sont des objets d'instances de la Carclasse.

Mais le mot «instance» peut également signifier «instance de structure». Mais l'objet n'est que pour les classes.

Tous les objets sont des instances. Toutes les instances ne doivent pas être des objets. Les instances peuvent être des «instances de structure» ou des «objets». J'espère que cela rendra la différence claire pour vous.


3

Un objet est une construction, quelque chose de statique qui a certaines caractéristiques et traits, tels que des propriétés et des méthodes, il peut être n'importe quoi (une chaîne, un contrôle utilisateur, etc.)

Une instance est une copie unique de cet objet que vous pouvez utiliser et utiliser.

Imaginez un produit comme un ordinateur.

LA station de travail xw6400 est un objet

VOTRE poste de travail xw6400 (ou le poste de travail xw6400 de VOTRE FEMME) est une instance de l'objet poste de travail xw6400


1
Vos premier et deuxième paragraphes décrivent des classes, pas des objets.
Marquis of Lorne

2

Cette réponse peut être considérée comme banale, mais s'inquiéter des différences entre une instance et un objet est déjà banal.

Je pense que c'est mieux représenté en javascript:

let obj= {"poo":1} 
// "obj" is an object

versets

Class Trash {
    constructor(){this.poo = 1;}
}

let i = new Trash();
// "i" is an instance

1

Une instance est une représentation spécifique d'un objet. Un objet est une chose générique tandis qu'une instance est un objet unique qui a été créé en mémoire. Habituellement, une instance aura des valeurs affectées à ses propriétés qui la différencient des autres instances du type d'objet.


1

Si nous voyons la définition de l'objet et de l'objet Instance -

La mémoire allouée au membre de classe au moment de l'exécution est appelée objet ou objet est l'instance de classe.

Voyons la définition de l'instance -

Mémoire allouée pour tout au moment de l'exécution est appelée comme variable d'instance.

Maintenant, comprenez la signification de toute allocation de mémoire d' exécution se produisant en C également via Malloc, Calloc, Realloc tels que:

struct p
{

}
p *t1
t1=(p) malloc(sizeof(p))

Donc, ici aussi, nous allouons une allocation de mémoire d'exécution, mais ici nous appelons comme instance donc t1 est une instance ici, nous ne pouvons pas dire t1 comme objet donc chaque objet est l'instance de la classe mais chaque instance n'est pas un objet.


Il y a une réponse correcte qui se cache ici quelque part mais la langue doit être nettoyée et simplifiée.
Marquis of Lorne

1

Object - Une instance d'une classe qui a son propre état et l'accès à tous les comportements définis par sa classe.

Instance - Référence à une zone de mémoire pour cette classe particulière.


1

Je ne peux pas croire, sauf pour un gars que personne n'a utilisé le code pour expliquer cela, laissez-moi essayer aussi!

// Design Class
class HumanClass {
    var name:String
    init(name:String) {
        self.name = name
    }
}

var humanClassObject1 = HumanClass(name: "Rehan") 

Maintenant le côté gauche c'est-à-dire: "humanClassObject1" est l'objet et le côté droit c'est-à-dire: HumanClass (nom: "Rehan") est l'instance de cet objet.

var humanClassObject2 = HumanClass(name: "Ahmad") // again object on left and it's instance on the right.

Donc, fondamentalement, instance contient les valeurs spécifiques de cet objet et les objets contiennent l'emplacement de la mémoire (au moment de l'exécution).

Souvenez-vous de la fameuse déclaration "référence d'objet non définie sur une instance d'un objet", cela signifie que les objets non initialisés n'ont aucune instance. Dans certains langages de programmation comme swift, le compilateur ne vous permettra même pas de concevoir une classe qui n'a aucun moyen d'initialiser tous ses membres (variable par exemple: nom, âge, etc.), mais dans certains langages, vous êtes autorisé à le faire:

// Design Class
class HumanClass {
    var name:String // See we don't have any way to initialise name property.
}

Et l'erreur ne s'affichera qu'au moment de l'exécution lorsque vous essayez de faire quelque chose comme ceci:

var myClass = HumanClass()
print(myClass.name) // will give, object reference not set to an instance of the object.

Cette erreur indique que les valeurs spécifiques (pour les variables \ propriété) sont "INSTANCE" comme j'ai essayé de l'expliquer ci-dessus! Et l'objet ie: "myClass" contient l'emplacement de la mémoire (au moment de l'exécution).


1

Lorsqu'une variable est déclarée d'un type personnalisé (classe), seule une référence est créée, qui est appelée un objet. A ce stade, aucune mémoire n'est allouée à cet objet . Il agit simplement comme un pointeur (vers l'emplacement où l'objet sera stocké à l'avenir). Ce processus est appelé «Déclaration».

Employee e; // e is an object

En revanche, lorsqu'une variable de type personnalisé est déclarée à l'aide de l' newopérateur, qui alloue de la mémoire en tas à cet objet et renvoie la référence à la mémoire allouée. Cet objet qui est maintenant appelé comme instance . Ce processus est appelé «instanciation».

Employee e = new Employee(); // e is an instance

D'un autre côté, dans certains langages comme Java, un objet équivaut à une instance, comme le montre la ligne écrite dans la documentation d'Oracle sur Java :

Remarque: la phrase «instancier une classe» signifie la même chose que «créer un objet». Lorsque vous créez un objet, vous créez une «instance» d'une classe, donc «instanciez» une classe.


0

chaque objet dit être une instance de sa classe mais chaque instance de la classe a sa propre valeur pour chaque attribut intances partage le nom d'attribut et l'opération avec leurs intances de classe mais un objet contient une référence implicite à sa classe on


0

Classe: Une classe est un plan. Objet: C'est la copie de la classe. Instance: C'est une variable qui est utilisée pour contenir l'adresse mémoire de l'objet.

Un exemple analytique très basique

Maison de classe -> Plan de la maison. Mais vous ne pouvez pas vivre dans le schéma directeur. Vous avez besoin d'une maison physique qui est l'instance de la classe dans laquelle vivre. C'est-à-dire que l'adresse réelle de l'objet est l'instance. Les instances représentent des objets.


L'instance fait référence à l'objet, pas à une variable.
Marquis of Lorne

0

Une fois que vous instanciez une classe (en utilisant new), cette chose instanciée devient un objet. Un objet est quelque chose qui peut adhérer à l'encapsulation, au polymorphisme, aux principes d'abstraction de la programmation orientée objet et à la chose réelle avec laquelle un programme interagit pour consommer les membres d'instance définis dans la classe. L'objet contient des membres d'instance (membres non statiques).

Ainsi l'instance d'une classe est un objet. Le mot «instance» est utilisé lorsque vous faites référence à l'origine d'où il est né, c'est plus clair si vous dites «instance d'une classe» par rapport à «objet d'une classe» (bien que ce dernier puisse être utilisé).

Peut également lire la section 'Inner classes' de ce document java sur les classes imbriquées - https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html


0

Java est un langage de programmation orienté objet (POO). Cela signifie que tout en Java, à l'exception des types primitifs, est un objet.

Désormais, les objets Java sont similaires aux objets du monde réel. Par exemple, nous pouvons créer un objet voiture en Java, qui aura des propriétés telles que la vitesse et la couleur actuelles; et des comportements comme: accélérer et se garer.

C'est Object .

entrez la description de l'image ici

L'instance , de l'autre côté, est une copie uniquement initialisée de cet objet qui ressemble àCar car = new Car() .

Découvrez-le pour en savoir plus sur les classes et les objets Java


Un objet est une instance d'une classe.
Marquis of Lorne

0

Réponse rapide et simple

  • Classe : une spécification, un plan pour un objet
  • Objet : présence physique de la classe en mémoire
  • Instance : une copie unique de l'objet (même structure, données différentes)

-1

Concernant la différence entre un objectet uninstance , je ne pense pas qu'il y ait de consensus.

Il me semble que les gens le changent à peu près de manière interchangeable, dans des journaux, des articles de blog, des livres ou des conversations.

Quant à moi, tel que je le vois, un objet est une entité générique et vivante dans la mémoire, spécifiée par le langage dans lequel il est utilisé. Tout comme la Objectclasse dans Java. Nous ne nous soucions pas beaucoup de son type, ou de tout autre élément qui lui est associé, qu'il soit géré par un conteneur ou non.

An instanceest un objectmais associé à un type, comme dans this method accepts Foo instancesou you can not put Animal instances in an instance of a List of Vehicles.

objects par exemple ont locksassocié avec eux, pas instances, alors que instances ont des méthodes. objectssont les ordures collectées, pas les instances.

Mais comme je l'ai dit, ce n'est que comment je le vois, et je ne pense pas qu'il y ait une organisation à laquelle nous pouvons nous référer pour une définition standard entre eux et chacun aura à peu près sa compréhension / définitions légèrement différentes (bien sûr dans des limites) .


-1

Un objet est une chose générique, par exemple, prenez une fonction linéaire en maths

ax + b est un objet, tandis que 3x + 2 est une instance de cet objet

Objet <<< Instance

Général <<< Spécifique

Il n'y a rien de plus à ça


-2

Un objet peut être une classe, disons que vous avez une classe appelée basketball.

mais vous voulez avoir plusieurs ballons de basket, donc dans votre code, vous créez plus d'un ballon de basket

disons basketball1 et basketball2. Ensuite, vous exécutez votre application. Vous avez maintenant 2 instances de l'objet basketball.


Cela signifierait qu'un objet est une instance d'un constructeur de classe?
streetparade

Pensez à l'objet comme un plan. disons que nous avons un plan pour le basket-ball, c'est la classe. lorsque le ballon de basket est créé et fabriqué, il existe maintenant, cela voudrait dire que nous avons 1 instance de l'objet basket. si nous avons construit un autre ballon de basket à partir de l'objet (plan). nous avons maintenant 2 instances du basketball. Il n'y a toujours qu'un seul objet, mais nous pouvons créer de nombreuses instances de cet objet.
Darxval

@Darxval alors qu'est-ce qu'une classe
Chyanit Singh

-3

Object fait référence à une classe et instance fait référence à un objet. En d'autres termes, instance est une copie d'un objet avec des valeurs particulières.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.