La différence entre les Classes, les Objets et les Instances


Qu'est-ce qu'une classe, un objet et une instance en Java?

Author: Francesco Menzani, 2009-08-01

14 answers

Java (et de tout autre langage de programmation) est modélisée en termes de types de et valeurs. Au niveau théorique, une valeur est une représentation d'un certain quantum d'informations, et un type est un ensemble de valeurs. Quand nous disons que la valeur de X est une instance de type Y, nous disons simplement que X est un membre de l'ensemble de valeurs qui est le type Y.

C'est donc ce que le terme "instance" signifie vraiment: il décrit une relation pas une chose.

Le système de types du langage de programmation Java prend en charge deux types de types, types primitifs et types de référence. Les types de référence sont ensuite divisés en classes et types de tableau . Un objet Java est une instance d'un type de référence.

Un objet est une instance de classe ou un tableau. ( JLS 4.3.1)

C'est la vue théorique des types.

Dans la pratique, la plupart des développeurs Java traitez les mots "instance" et "objet" comme synonymes. (Et cela m'inclut alors j'essaie d'expliquer quelque chose rapidement.) Et la plupart des développeurs utilisent le mot "valeur "plutôt que" instance " pour désigner une instance de type primitif.

 68
Author: Stephen C, 2018-04-12 10:37:34

Une classe est un plan que vous utilisez pour créer des objets . Un objet est une instance d'une classe - c'est une "chose" concrète que vous avez faite en utilisant une classe spécifique. Ainsi, l '"objet" et "instance" sont la même chose, mais le mot "instance" indique la relation d'un objet à sa classe.

C'est facile à comprendre si vous regardez un exemple. Par exemple, supposons que vous ayez une classe House. Votre propre maison est un objet et est une instance de class House. Votre la maison de la sœur est un autre objet (une autre instance de la classe House).

// Class House describes what a house is
class House {
    // ...
}

// You can use class House to create objects (instances of class House)
House myHouse = new House();
House sistersHouse = new House();

La classe House décrit le concept de ce qu'est une maison, et il existe des maisons spécifiques en béton qui sont des objets et des instances de la classe House.

Remarque: C'est exactement la même chose en Java que dans tous les langages de programmation orientés objet.

 78
Author: Jesper, 2009-09-28 09:46:38

Une classe est essentiellement une définition, et contient le code de l'objet. Un objet est une instance d'une classe

Par exemple si vous dites

String word = new String();

La classe est la classe String, qui décrit le mot objet (instance).

Lorsqu'une classe est déclarée, aucune mémoire n'est allouée, donc la classe n'est qu'un modèle.

Lorsque l'objet de la classe est déclaré, la mémoire est allouée.

 27
Author: mustafabar, 2011-11-05 01:19:35

J'aime l'explication de Jesper en termes profanes

En improvisant des exemples de la réponse de Jesper,

class House {
// blue print for House Objects
}

class Car {
// blue print for Instances of Class Car 
}

House myHouse = House new();
Car myCar = Car new();

MyHouse et myCar sont des objets

MyHouse est une instance de House (relie Object-myHouse à sa Classe-House) myCar est une instance de Car

En bref

"myHouse est un occurrence de Classe Maison", qui est la même chose que de dire "myHouse est un Object de de type Maison"

 10
Author: user2390183, 2013-10-20 21:10:07

Class est un type de données,Vous utilisez ce type pour créer un objet.

  • L'instance est logique mais l'objet est un moyen physique occupe une certaine mémoire.

  • Nous pouvons créer une instance de la classe abstraite ainsi que pour l'interface, mais nous ne pouvons pas créer un
    l'objet de celles-ci.

  • L'objet est une instance de classe et l'instance signifie un représentant de la classe, c'est-à-dire un objet.

  • Exemple renvoie à la Référence d'un objet.

  • L'Objet est en fait pointant vers l'adresse mémoire de cette instance.

  • Vous ne pouvez pas passer d'instance sur les calques mais vous pouvez passer l'objet sur les calques

  • Vous ne pouvez pas stocker une instance, mais vous pouvez stocker un objet

  • Un seul objet peut avoir plusieurs instances.

  • L'instance aura à la fois la définition de classe et la définition d'objet où, comme dans object, elle n'aura que la définition d'objet.

Syntaxe de Objet:

 Classname var=new Classname();

Mais par exemple la création ne renvoie qu'un pointeur faisant référence à un objet, la syntaxe est:

 Classname varname;
 6
Author: SwatiKothari, 2016-12-15 07:39:42

En java, les objets sont générés sur la mémoire du tas. Ceux-ci nécessitent une référence pour être pointés et utilisés dans notre application. La référence a l'emplacement de mémoire de l'objet avec lequel nous pouvons utiliser les objets dans notre application. Une référence en bref n'est rien d'autre qu'un nom de la variable qui stocke l'adresse de l'objet instancié sur un emplacement mémoire.

Un instance est un terme général pour object. Pour info, Object est une classe.

Par Exemple

Class A{

}

A ref = new A();

Pour le code ci-dessus snippet, ref est la référence pour un objet de classe A généré sur le tas.

 3
Author: Arun, 2013-07-09 07:09:01

Si vous avez un programme qui modélise les voitures, vous avez une classe pour représenter les voitures, donc, dans le code, vous pouvez dire:

Car someCar = new Car();

SomeCar est maintenant une instance de la classe Car. Si le programme est utilisé dans un atelier de réparation et que le someCar représente votre voiture dans leur système, alors votre voiture est l'objet.

Donc Car est une classe qui peut représenter n'importe quelle voiture du monde réel someCar est une instance de la classe Car et someCare représente un objet de la vie réelle (votre voiture)

Cependant instance et object est très souvent utilisé de manière interchangeable lorsqu'il s'agit de discuter du codage

 2
Author: Rune FS, 2009-08-01 14:17:53

Tout type de données que votre ordinateur stocke et traite est dans sa représentation la plus basique une ligne de bits. La façon dont ces bits sont interprétés se fait à travers les types de données. Les types de données peuvent être primitifs ou complexes. Les types de données primitifs sont - par exemple - int ou double. Ils ont une longueur spécifique et une manière spécifique d'être interprété. Dans le cas d'un nombre entier, généralement le premier bit est utilisé pour le signe, les autres sont utilisés pour la valeur.

Les types de données complexes peuvent être des combinaisons de primitive et d'autres types de données complexes et sont appelés "Classe" en Java.

Vous pouvez définir le type de données complexe PeopleName composé de deux chaînes appelées prénom et nom. Chaque chaîne en Java est un autre type de données complexe. Les chaînes en retour sont (probablement) implémentées en utilisant le type de données primitif char pour lequel Java sait combien de bits ils prennent pour stocker et comment les interpréter.

Lorsque vous créez une instance d'un type de données, vous obtenez un objet et de vos ordinateurs réserves un peu de mémoire pour cela et se souvient de son emplacement et du nom de cette instance. Une instance de PeopleName en mémoire occupera l'espace des deux variables de chaîne plus un peu plus pour la comptabilité. Un entier prend 32 bits en Java.

Les types de données complexes peuvent avoir des méthodes qui leur sont assignées. Les méthodes peuvent effectuer des actions sur leurs arguments ou sur l'instance du type de données à partir duquel vous appelez cette méthode. Si vous avez deux instances de PeopleName appelées p1 et p2 et que vous appelez une méthode p1.getFirstName (), il renvoie généralement le prénom de la première personne mais pas celui de la deuxième personne.

 2
Author: Kage, 2009-09-28 09:39:03

Le concept derrière les classes et les objets est d'encapsuler la logique dans une seule unité de programmation. Les classes sont les plans des objets créés.

Voici un exemple de classe représentant une Voiture:

public class Car {

    int currentSpeed;
    String name;

    public void accelerate() {  
    }

    public void park() {
    }

    public void printCurrentSpeed() {
    }
}

Vous pouvez créer instances de la object Voiture comme ceci:

Car audi = new Car();
Car toyota = new Car();

J'ai pris l'exemple de ce tutoriel

 2
Author: filip_j, 2014-11-15 20:34:04

Classe

  • Il a une existence logique, c'est-à-dire qu'aucun espace mémoire n'est alloué lors de sa création.

  • C'est un ensemble d'objets.

  • Une classe peut être considérée comme un plan pour créer des objets.

    • Il est créé en utilisant le mot-clé de classe

    • Une classe définit les méthodes et les membres de données qui seront possédés par les objets.


Objet

  • Il a une existence physique, c'est à dire l'espace mémoire est alloué lors de sa création.

  • Il est une instance d'une classe.

  • Un objet est une entité unique qui contient des membres de données et des fonctions membres ensemble dans le langage OOP.

    • Il est créé en utilisant le nouveau mot-clé

    • Un objet spécifie les implémentations des méthodes et les valeurs qui seront possédées par les membres de données de la classe.

 1
Author: , 2017-01-20 16:55:08

Honnêtement, je me sens plus à l'aise avec Alfred blog définitions:

Objet: monde réel des objets d'actions 2 principales caractéristiques, l'état et le comportement. L'homme a un état (nom, âge) et un comportement (courir, dormir). Voiture ont état (vitesse actuelle, vitesse actuelle) et état (application de frein, changement de vitesse). Les objets logiciels sont conceptuellement similaires aux objets du monde réel: ils consistent aussi en un état et un comportement associé. Un objet stocke son état dans des champs et expose son comportement par des méthodes.

De Catégorie: c'est un "modèle" / "plan d'action" qui est utilisé pour créer des objets. Fondamentalement, une classe se compose de champ, champ statique, méthode, méthode statique et constructeur. Le champ est utilisé pour contenir l'état de la classe (par exemple: nom de l'objet Étudiant). La méthode est utilisée pour représenter le comportement de la classe (par exemple: comment un objet étudiant va se lever). Le constructeur est utilisé pour créer une nouvelle instance de la classe.

Exemple: une instance est une copie unique d'une Classe représentant un Objet. Lorsqu'une nouvelle instance d'une classe est créée, la JVM alloue une pièce de mémoire pour cette instance de classe.

Étant donné l'exemple suivant:

public class Person {
    private int id;
    private String name;
    private int age;

    public Person (int id, String name, int age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }

    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + id;
        return result;
    }

    public boolean equals(Object obj) {
        if (this == obj)
            return true;
        if (obj == null)
            return false;
        if (getClass() != obj.getClass())
            return false;
        Person other = (Person) obj;
        if (id != other.id)
            return false;
        return true;
    }

    public static void main(String[] args) {
        //case 1
        Person p1 = new Person(1, "Carlos", 20);
        Person p2 = new Person(1, "Carlos", 20);

        //case 2
        Person p3 = new Person(2, "John", 15);
        Person p4 = new Person(3, "Mary", 17);
    }
}

Pour le cas 1, il existe deux instances de la classe Person, mais les deux instances représentent le même objet.

Pour le cas 2, il existe deux instances de la classe Person, mais chaque instance représente un objet différent.

Donc la classe, l'objet et l'instance sont des choses différentes. L'objet et l'instance ne sont pas synonymes comme cela est suggéré dans la réponse sélectionnée comme bonne réponse.

 1
Author: Carlos Casallas, 2018-01-31 16:42:25

La définition "Object est une instance d'une classe", est conceptuellement fausse, mais correcte selon l'implémentation. En fait, les fonctionnalités orientées objet sont tirées de la vie réelle, pour concentrer l'esprit du programmeur de plus en moins. Dans la vie réelle, les classes sont conçues pour gérer l'objet.Par exemple, nous, les êtres humains, avons une caste,une religion, une nationalité et bien plus encore. Ces moulages, la religion, la nationalité sont les classes et n'ont pas d'existence sans les êtres humains. Mais dans la mise en œuvre il n'y a pas existence d'objets sans classes. Object-Object est une entité discrète ayant un attribut bien défini. Ici discret signifie quelque chose qui le rend unique des autres. Un attribut bien défini a du sens dans un certain contexte. Class-Classification d'un objet ayant un comportement commun ou d'objets d'un type commun.

 -1
Author: Gaurav Kathuria, 2016-01-10 06:35:31

Bien que les réponses ci-dessus soient correctes, une autre façon de penser aux Classes et aux Objets serait d'utiliser des exemples du monde réel: Une classe nommée Animal peut contenir des objets comme un Chat, un Chien ou un Poisson. Un objet avec un titre de Bible serait de livre de classe,etc. Les classes sont générales, les objets sont spécifiques. Cet exemple de pensée m'a aidé quand j'apprenais Java.

 -1
Author: kurdtpage, 2016-03-02 21:35:26

Class est un modèle ou un type. Un objet est une instance de la classe.

Par exemple:

public class Tweet {

}

Tweet newTweet = new Tweet();

Tweet est une classe et newTweet est un objet de la classe.

 -2
Author: Gagan, 2016-09-04 11:54:21