logo

Classe d'objet en Java

Classe d'objet en Java est présent dans java.lang emballer.

la modulation d'amplitude
  • Chaque classe est directement ou indirectement dérivée de la classe Object. Si une classe n’étend aucune autre classe, alors il s’agit d’une classe enfant directe de la Classe d'objet Java et s'il étend une autre classe, alors il est indirectement dérivé.
  • La classe Object fournit plusieurs méthodes telles que toString() est égal à() code de hachage() et bien d'autres.
  • La classe Object agit comme racine de la hiérarchie d'héritage dans tout programme Java.

Ici, nous utilisons le àChaîne() et code de hachage() méthodes de la classe Object pour fournir une représentation sous forme de chaîne personnalisée pour une classe .



Java
// Java Code to demonstrate Object class class Person {  String n; //name  // Constructor  public Person(String n) {  this.n = n;  }  // Override toString() for a   // custom string representation  @Override  public String toString() {  return 'Person{name:'' + n + ''}';  }  public static void main(String[] args) {    Person p = new Person('Geek');    // Custom string representation  System.out.println(p.toString());    // Default hash code value  System.out.println(p.hashCode());   } } 

Sortir
Person{name:'Geek'} 321001045 

Explication: Dans l'exemple ci-dessus, nous remplaçons le àChaîne() méthode pour fournir un représentation sous forme de chaîne personnalisée de la classe Person et utiliser le code de hachage() méthode pour afficher la valeur du code de hachage par défaut de l’objet.

Méthodes de classe d'objet

La classe Object fournit plusieurs méthodes qui sont les suivantes :

  • Méthode toString()
  • Méthode hashCode()
  • Méthode égale (objet obj)
  • méthode finaliser()
  • Méthode getClass()
  • méthode clone()
  • wait() notify() notifyAll() (méthodes de concurrence)
Méthodes de classe d'objet en Java' title=

1. Méthode toString()

Le àChaîne() fournit une représentation sous forme de chaîne d'un objet et est utilisée pour convertir un objet en chaîne. La méthode toString() par défaut pour la classe Object renvoie une chaîne composée du nom de la classe dont l'objet est une instance, du caractère arobase « @ » et de la représentation hexadécimale non signée du code de hachage de l'objet.



Note: Chaque fois que nous essayons d’imprimer une référence d’objet, la méthode toString() est appelée en interne.

Exemple:

Étudiant de classe publique {



chaîne publique toString() {

return 'Objet étudiant';

}

}

Explication: La méthode toString() est remplacée pour renvoyer une représentation sous forme de chaîne personnalisée de l'objet Student.

2. Méthode hashCode()

Pour chaque objet, JVM génère un numéro unique qui est un hashcode. Il renvoie des entiers distincts pour des objets distincts. Une idée fausse courante à propos de cette méthode est que la méthode hashCode() renvoie l'adresse de l'objet qui n'est pas correcte. Il convertit l'adresse interne de l'objet en entier à l'aide d'un algorithme. La méthode hashCode() est indigène car en Java, il est impossible de trouver l'adresse d'un objet, il utilise donc des langages natifs comme C/C++ pour trouver l'adresse de l'objet.

Utilisation de la méthode hashCode() :

Il renvoie une valeur de hachage utilisée pour rechercher des objets dans une collection. JVM (Java Virtual Machine) utilise la méthode hashcode tout en enregistrant les objets dans des structures de données liées au hachage comme HashSet HashMap Hashtable, etc. Le principal avantage de l'enregistrement d'objets basés sur le code de hachage est que la recherche devient facile. 

Note: Remplacement de code de hachage() La méthode doit être effectuée de telle sorte que pour chaque objet, nous générons un numéro unique. Par exemple pour une classe d'étudiant nous pouvons renvoyer le numéro de rôle. d'un étudiant de la méthode hashCode() car elle est unique. 

Exemple:

Étudiant de classe publique {

rouleau entier ;

@Outrepasser

public int hashCode() {

rouleau de retour ;

}

}

Explication: Le code de hachage() La méthode est remplacée pour renvoyer une valeur de hachage personnalisée basée sur le résultat de l'objet Student.

3.Équals(Object obj)Méthodes

Le est égal() La méthode compare l'objet donné avec l'objet actuel. Il est recommandé de remplacer cette méthode pour définir des conditions d'égalité personnalisées.

Note: Il est généralement nécessaire de remplacer le code de hachage() chaque fois que cette méthode est remplacée afin de conserver le contrat général de la méthode hashCode qui stipule que les objets égaux doivent avoir des codes de hachage égaux. 

Exemple:

Étudiant de classe publique {

rouleau entier ;


@Outrepasser

public booléen égal(Objet o) {

if (o instanceof Student) {

return this.roll == ((Étudiant) o).roll;

}

renvoie faux ;

}

}

Explication: Le est égal() la méthode est remplacée pour comparer rouler entre deux objets Étudiant.

4. Méthode getClass()

Le getClass() La méthode renvoie l'objet de classe de « cet » objet et est utilisée pour obtenir la classe d'exécution réelle de l'objet. Il peut également être utilisé pour obtenir des métadonnées de cette classe. L'objet Class renvoyé est l'objet verrouillé par les méthodes statiques synchronisées de la classe représentée. Comme il est définitif, nous ne l'annulons pas.

Exemple:

Java
// Demonstrate working of getClass() public class Geeks {  public static void main(String[] args)  {  Object o = new String('GeeksForGeeks');  Class c = o.getClass();  System.out.println('Class of Object o is: '  + c.getName());  } } 

Sortir
Class of Object o is: java.lang.String 

Explication: Le getClass() La méthode est utilisée pour imprimer la classe d'exécution de l'objet 'o'.

Note: Après avoir chargé un fichier .class, JVM créera un objet du type java.lang.Class dans la zone du tas. Nous pouvons utiliser cet objet de classe pour obtenir des informations au niveau de la classe. Il est largement utilisé dans Réflexion  

5.Méthode finalize()

Le finaliser() La méthode est appelée juste avant qu'un objet ne soit récupéré. On l'appelle le Éboueur sur un objet lorsque le garbage collector détermine qu'il n'y a plus de références à l'objet. Nous devons remplacer la méthode finalize() pour disposer des ressources système, effectuer des activités de nettoyage et minimiser les fuites de mémoire. Par exemple, avant de détruire le conteneur Web des objets Servlet, appelez toujours la méthode finalize pour effectuer des activités de nettoyage de la session. 

Note: La méthode finalize s'appelle simplement une fois sur un objet même si cet objet est éligible pour le garbage collection plusieurs fois. 

Exemple:

Java
// Demonstrate working of finalize() public class Geeks {  public static void main(String[] args) {    Geeks t = new Geeks();  System.out.println(t.hashCode());  t = null;  // calling garbage collector  System.gc();  System.out.println('end');  }  @Override protected void finalize()  {  System.out.println('finalize method called');  } } 

Sortir
1510467688 end finalize method called 

Explication: Le finaliser() La méthode est appelée juste avant que l'objet ne soit récupéré.

6. méthode clone() 

Le cloner() La méthode crée et renvoie un nouvel objet qui est une copie de l'objet actuel.

Exemple:

classe publique Book implémente Cloneable {

chaîne privée t ; //titre


livre public (Chaîne t) {

ceci.t = t;

}

@Outrepasser

public Object clone() lance CloneNotSupportedException {

renvoie super.clone();

}

}

Explication: Le cloner() La méthode est remplacée pour renvoyer une copie clonée du Objet livre .

7. Méthodes de concurrence : wait() notify() et notifyAll()

Ces méthodes sont liées à filCommunication en Java . Ils sont utilisés pour faire attendre les threads ou avertir les autres en programmation simultanée.

Exemple d'utilisation de toutes les méthodes de classe d'objet en Java

Java
import java.io.*; public class Book implements Cloneable {  private String t; // title  private String a; // author  private int y; // year  public Book(String t String a int y)  {  this.t = t;  this.a = a;  this.y = y;  }  // Override the toString method  @Override public String toString()  {  return t + ' by ' + a + ' (' + y + ')';  }  // Override the equals method  @Override public boolean equals(Object o)  {  if (o == null || !(o instanceof Book)) {  return false;  }  Book other = (Book)o;  return this.t.equals(other.getTitle())  && this.a.equals(other.getAuthor())  && this.y == other.getYear();  }  // Override the hashCode method  @Override public int hashCode()  {  int res = 17;  res = 31 * res + t.hashCode();  res = 31 * res + a.hashCode();  res = 31 * res + y;  return res;  }  // Override the clone method  @Override public Book clone()  {  try {  return (Book)super.clone();  }  catch (CloneNotSupportedException e) {  throw new AssertionError();  }  }  // Override the finalize method  @Override protected void finalize() throws Throwable  {  System.out.println('Finalizing ' + this);  }  public String getTitle() { return t; }  public String getAuthor() { return a; }  public int getYear() { return y; }  public static void main(String[] args)  {  // Create a Book object and print its details  Book b1 = new Book(  'The Hitchhiker's Guide to the Galaxy'  'Douglas Adams' 1979);  System.out.println(b1);  // Create a clone of the Book object and print its  // details  Book b2 = b1.clone();  System.out.println(b2);  // Check if the two objects are equal  System.out.println('b1 equals b2: '  + b1.equals(b2));  // Get the hash code of the two objects  System.out.println('b1 hash code: '  + b1.hashCode());  System.out.println('b2 hash code: '  + b2.hashCode());  // Set book1 to null to trigger garbage collection  // and finalize method  b1 = null;  System.gc();  } } 

Sortir
The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) The Hitchhiker's Guide to the Galaxy by Douglas Adams (1979) b1 equals b2: true b1 hash code: 1840214527 b2 hash code: 1840214527 

Explication: L'exemple ci-dessus montre l'utilisation de àChaîne() égal() hashCode() et cloner() méthodes dans le Cours de livre .