logo

Classes et objets en Java

En Java, les classes et les objets sont des concepts de base de la programmation orientée objet (POO) utilisés pour représenter des concepts et des entités du monde réel. La classe représente un groupe d'objets ayant des propriétés et un comportement similaires. Par exemple, le type d'animal Chien est une classe tandis qu'un chien particulier nommé Tommy est un objet du Chien classe.

Dans cet article, nous discuterons des objets et des classes Java et de la manière de les implémenter dans notre programme.



Cours Java

Une classe en Java est un ensemble d’objets qui partagent des caractéristiques/comportements communs et des propriétés/attributs communs. Il s'agit d'un plan ou d'un prototype défini par l'utilisateur à partir duquel les objets sont créés. Par exemple, Student est une classe tandis qu'un étudiant particulier nommé Ravi est un objet.

Propriétés des classes Java

  1. La classe n'est pas une entité du monde réel. Il s'agit simplement d'un modèle, d'un plan ou d'un prototype à partir duquel les objets sont créés.
  2. La classe n'occupe pas de mémoire.
  3. La classe est un groupe de variables de différents types de données et un groupe de méthodes.
  4. Une classe en Java peut contenir :
    • Membre de données
    • Méthode
    • Constructeur
    • Classe imbriquée
    • Interface

Déclaration de classe en Java

  access_modifier     class   <  class_name>{ membre de données ; méthode; constructeur; classe imbriquée ; interface; }>

Exemple de classe Java

Java








// Java Program for class example> class> Student {> >// data member (also instance variable)> >int> id;> >// data member (also instance variable)> >String name;> >public> static> void> main(String args[])> >{> >// creating an object of> >// Student> >Student s1 =>new> Student();> >System.out.println(s1.id);> >System.out.println(s1.name);> >}> }>

>

>

Java




// Java program to Illustrate Creation of Object> // Using new Instance> // Main class> class> GFG {> >// Declaring and initializing string> >String name =>'GeeksForGeeks'>;> >// Main driver method> >public> static> void> main(String[] args)> >{> >// Try block to check for exceptions> >try> {> >Class cls = Class.forName(>'GFG'>);> >// Creating object of main class> >// using instance method> >GFG obj = (GFG)cls.newInstance();> >// Print and display> >System.out.println(obj.name);> >}> >catch> (ClassNotFoundException e) {> >e.printStackTrace();> >}> >catch> (InstantiationException e) {> >e.printStackTrace();> >}> >catch> (IllegalAccessException e) {> >e.printStackTrace();> >}> >}> }>

>

>

matrice de latex

Java




// Java program to Illustrate Creation of Object> // Using clone() method> // Main class> // Implementing Cloneable interface> class> GFG>implements> Cloneable {> >// Method 1> >@Override> >protected> Object clone()> >throws> CloneNotSupportedException> >{> >// Super() keyword refers to parent class> >return> super>.clone();> >}> >String name =>'GeeksForGeeks'>;> >// Method 2> >// main driver method> >public> static> void> main(String[] args)> >{> >GFG obj1 =>new> GFG();> >// Try block to check for exceptions> >try> {> >GFG obj2 = (GFG)obj1.clone();> >System.out.println(obj2.name);> >}> >catch> (CloneNotSupportedException e) {> >e.printStackTrace();> >}> >}> }>

>

>

Sortie 1

0 null>

Sortie 2

GeeksForGeeks>

Sortie 3

GeeksForGeeks>

Composants des classes Java

En général, les déclarations de classe peuvent inclure ces composants, dans l'ordre :

  1. Modificateurs : Une classe peut être publique ou avoir un accès par défaut (Voir ce pour plus de détails).
  2. Mot-clé de classe : Le mot-clé class est utilisé pour créer une classe.
  3. Nom du cours: Le nom doit commencer par une lettre initiale (en majuscule par convention).
  4. Superclasse (le cas échéant) : Le nom du parent (superclasse) de la classe, le cas échéant, précédé du mot-clé extends. Une classe ne peut étendre (sous-classe) qu'un seul parent.
  5. Interfaces (le cas échéant) : Une liste d'interfaces séparées par des virgules implémentées par la classe, le cas échéant, précédée du mot clé Implements. Une classe peut implémenter plusieurs interfaces.
  6. Corps: Le corps de la classe est entouré d'accolades, { }.

Les constructeurs sont utilisés pour initialiser de nouveaux objets. Les champs sont des variables qui fournissent l'état de la classe et de ses objets, et les méthodes sont utilisées pour implémenter le comportement de la classe et de ses objets.
Il existe différents types de classes utilisées dans les applications en temps réel telles que classes imbriquées , cours anonymes , et expression lambda .

Objets Java

Un objet en Java est une unité de base de la programmation orientée objet et représente des entités réelles. Les objets sont les instances d'une classe créées pour utiliser les attributs et les méthodes d'une classe. Un programme Java typique crée de nombreux objets qui, comme vous le savez, interagissent en appelant des méthodes. Un objet est constitué de :

  1. État : Il est représenté par les attributs d'un objet. Il reflète également les propriétés d'un objet.
  2. Comportement : Il est représenté par les méthodes d'un objet. Il reflète également la réponse d'un objet avec d'autres objets.
  3. Identité : Il donne un nom unique à un objet et permet à un objet d'interagir avec d'autres objets.

Exemple d'objet : chien

Objets Java

Les objets correspondent à des choses trouvées dans le monde réel. Par exemple, un programme graphique peut avoir des objets tels qu'un cercle, un carré et un menu. Un système d'achat en ligne peut contenir des objets tels qu'un panier, un client et un produit.

Note: Lorsque nous créons un objet qui est un type de données non primitif, il est toujours alloué sur la mémoire tas.

Déclaration d'objets (également appelée instanciation d'une classe)

Lorsqu'un objet d'une classe est créé, la classe est dite instancié . Toutes les instances partagent les attributs et le comportement de la classe. Mais les valeurs de ces attributs, c'est-à-dire l'état, sont uniques pour chaque objet. Une seule classe peut avoir n'importe quel nombre d'instances.

Exemple:

Déclaration d'objet Java

Comme nous déclarons des variables comme (tapez name;). Cela informe le compilateur que nous utiliserons le nom pour faire référence aux données dont le type est type. Avec une variable primitive, cette déclaration réserve également la quantité de mémoire appropriée pour la variable. Ainsi, pour les variables de référence, le type doit être strictement un nom de classe concret. En général, nous ne peut pas créer des objets d'une classe abstraite ou d'une interface.

Dog tuffy;>

Si nous déclarons une variable de référence (tuffy) comme ceci, sa valeur sera indéterminée (nulle) jusqu'à ce qu'un objet lui soit réellement créé et assigné. Le simple fait de déclarer une variable de référence ne crée pas d'objet.

Initialisation d'un objet Java

L'opérateur new instancie une classe en allouant de la mémoire pour un nouvel objet et en renvoyant une référence à cette mémoire. L'opérateur new appelle également le constructeur de classe.

Exemple:

Java




// Class Declaration> public> class> Dog {> >// Instance Variables> >String name;> >String breed;> >int> age;> >String color;> >// Constructor Declaration of Class> >public> Dog(String name, String breed,>int> age,> >String color)> >{> >this>.name = name;> >this>.breed = breed;> >this>.age = age;> >this>.color = color;> >}> >// method 1> >public> String getName() {>return> name; }> >// method 2> >public> String getBreed() {>return> breed; }> >// method 3> >public> int> getAge() {>return> age; }> >// method 4> >public> String getColor() {>return> color; }> >@Override> public> String toString()> >{> >return> (>'Hi my name is '> +>this>.getName()> >+>'. My breed,age and color are '> >+>this>.getBreed() +>','> +>this>.getAge()> >+>','> +>this>.getColor());> >}> >public> static> void> main(String[] args)> >{> >Dog tuffy> >=>new> Dog(>'tuffy'>,>'papillon'>,>5>,>'white'>);> >System.out.println(tuffy.toString());> >}> }>

>

valeur de la chaîne java
>

Sortir

Hi my name is tuffy. My breed,age and color are papillon,5,white>

Initialisez en utilisant la méthode/fonction :

Java




public> class> GFG {> >// sw=software> >static> String sw_name;> >static> float> sw_price;> >static> void> set(String n,>float> p)> >{> >sw_name = n;> >sw_price = p;> >}> >static> void> get()> >{> >System.out.println(>'Software name is: '> + sw_name);> >System.out.println(>'Software price is: '> >+ sw_price);> >}> >public> static> void> main(String args[])> >{> >GFG.set(>'Visual studio'>,>0>.0f);> >GFG.get();> >}> }>

méthodes de chaîne en Java

>

>

Sortir

Software name is: Visual studio Software price is: 0.0>

Cette classe contient un seul constructeur. Nous pouvons reconnaître un constructeur car sa déclaration utilise le même nom que la classe et il n'a pas de type de retour. Le compilateur Java différencie les constructeurs en fonction du nombre et du type des arguments. Le constructeur dans le Chien la classe prend quatre arguments. L'instruction suivante fournit tuffy, papillon,5 et white comme valeurs pour ces arguments :

Dog tuffy = new Dog('tuffy','papillon',5, 'white');>

Le résultat de l'exécution de cette instruction peut être illustré comme suit :

Allocation de mémoire des objets Java

Note: Toutes les classes ont au moins un constructeur. Si une classe n'en déclare explicitement aucune, le compilateur Java fournit automatiquement un constructeur sans argument, également appelé constructeur par défaut. Ce constructeur par défaut appelle le constructeur sans argument de la classe parent (car il ne contient qu'une seule instruction, c'est-à-dire super();), ou le Objet constructeur de classe si la classe n'a pas d'autre parent (car la classe Object est le parent de toutes les classes directement ou indirectement).

Façons de créer un objet d'une classe

Il existe quatre façons de créer des objets en Java. À proprement parler, il n'y a qu'une seule façon(en utilisant un nouveau mot-clé), et le reste utilise en interne un nouveau mot-clé.

1. Utiliser un nouveau mot-clé

C'est la manière la plus courante et la plus générale de créer un objet en Java.

Exemple:

// creating object of class Test Test t = new Test();>

2. Utilisation de la méthode Class.forName (String className)

Il existe une classe prédéfinie dans le package java.lang avec le nom Class. La méthode forName(String className) renvoie l'objet Class associé à la classe portant le nom de chaîne donné. Nous devons donner un nom complet à une classe. Lors de l'appel de la méthode new Instance() sur cet objet Class, il renvoie une nouvelle instance de la classe avec le nom de chaîne donné.

// creating object of public class Test // consider class Test present in   com.p1   package Test obj = (Test)Class.forName('com.p1.Test').newInstance();>

3. Utilisation de la méthode clone()

La méthode clone() est présente dans la classe Object. Il crée et renvoie une copie de l'objet.

// creating object of class Test Test t1 = new Test(); // creating clone of above object Test t2 = (Test)t1.clone();>

4. Désérialisation

La désérialisation est une technique de lecture d'un objet à partir de l'état enregistré dans un fichier. Faire référence à Sérialisation/Désérialisation en Java

FileInputStream file = new FileInputStream(filename); ObjectInputStream in = new ObjectInputStream(file); Object obj = in.readObject();>

Créer plusieurs objets par un seul type (une bonne pratique)

En temps réel, nous avons besoin de différents objets d’une classe dans différentes méthodes. Créer un certain nombre de références pour les stocker n'est pas une bonne pratique et nous déclarons donc une variable de référence statique et l'utilisons chaque fois que nécessaire. Dans ce cas, le gaspillage de mémoire est moindre. Les objets qui ne seront plus référencés seront détruits par le Éboueur de Java.

Exemple:

Test test = new Test(); test = new Test();>

Dans le système d'héritage, nous utilisons une variable de référence de classe parent pour stocker un objet de sous-classe. Dans ce cas, nous pouvons basculer vers différents objets de sous-classe en utilisant la même variable référencée.

Exemple:

class Animal {} class Dog extends Animal {} class Cat extends Animal {} public class Test { // using Dog object Animal obj = new Dog(); // using Cat object obj = new Cat(); }>

Objets anonymes en Java

Les objets anonymes sont des objets instanciés mais qui ne sont pas stockés dans une variable de référence.

  • Ils sont utilisés pour les appels de méthode immédiats.
  • Ils seront détruits après l’appel de la méthode.
  • Ils sont largement utilisés dans différentes bibliothèques. Par exemple, dans les bibliothèques AWT, ils sont utilisés pour effectuer certaines actions lors de la capture d'un événement (par exemple, une pression sur une touche).
  • Dans l'exemple ci-dessous, lorsqu'un bouton clé (désigné par le btn) est enfoncé, nous créons simplement un objet anonyme de la classe EventHandler pour simplement appeler la méthode handle.
btn.setOnAction(new EventHandler() { public void handle(ActionEvent event) { System.out.println('Hello World!'); } });>

Différence entre la classe Java et les objets

Les différences entre classe et objet en Java sont les suivantes :

Classe

Objet

La classe est le modèle d'un objet. Il est utilisé pour créer des objets. Un objet est une instance de la classe.
Aucune mémoire n'est allouée lorsqu'une classe est déclarée. La mémoire est allouée dès qu'un objet est créé.
Une classe est un groupe d'objets similaires. Un objet est une entité du monde réel comme un livre, une voiture, etc.
La classe est une entité logique. Un objet est une entité physique.
Une classe ne peut être déclarée qu'une seule fois. Les objets peuvent être créés plusieurs fois selon les besoins.
Un exemple de classe peut être une voiture. Les objets de la classe voiture peuvent être BMW, Mercedes, Ferrari, etc.