Trieda objektov v jazyku Java

Trieda objektov v jazyku Java

Trieda objektu v jazyku Java je prítomný v java.lang balík.

  • Každá trieda je priamo alebo nepriamo odvodená od triedy Object. Ak trieda nerozširuje žiadnu inú triedu, potom je to priama podriadená trieda Trieda Java Object a ak rozširuje ďalšiu triedu, potom je nepriamo odvodená.
  • Trieda Object poskytuje viacero metód ako napr toString()rovná sa() hashCode() a mnoho ďalších.
  • Trieda Object funguje ako koreň hierarchie dedičnosti v akomkoľvek programe Java.

Tu používame toString() a hashCode() metódy triedy Object poskytnúť vlastnú reťazcovú reprezentáciu pre triedu .

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  ());         }   }   

Výstup
Person{name:'Geek'} 321001045  

Vysvetlenie: Vo vyššie uvedenom príklade prepíšeme toString() spôsob poskytovania a vlastnú reťazcovú reprezentáciu triedy Osoba a použiť hashCode() metóda na zobrazenie predvolenej hodnoty hash kódu objektu.

Metódy tried objektov

Trieda Object poskytuje viacero metód, ktoré sú nasledovné:

  • metóda toString().
  • metóda hashCode().
  • rovná sa (Object objekt) metóda
  • metóda finalize().
  • getClass() metóda
  • metóda clone().
  • wait() notify() notifyAll() (metódy súbežnosti)
Metódy tried objektov v jazyku Java

1. Metóda toString().

The toString() poskytuje reťazcovú reprezentáciu objektu a používa sa na konverziu objektu na reťazec. Predvolená metóda toString() pre triedu Object vracia reťazec pozostávajúci z názvu triedy, ktorej je objekt inštanciou, zavináča `@' a hexadecimálnej reprezentácie hašovacieho kódu objektu bez znamienka.

Poznámka: Kedykoľvek sa pokúsime vytlačiť akýkoľvek odkaz na objekt, potom sa interne zavolá metóda toString().

Príklad:

public class Študent {

public String toString() {

return 'Objekt študenta';

}

}

Vysvetlenie: Metóda toString() je prepísaná, aby vrátila vlastnú reťazcovú reprezentáciu objektu Student.

2. Metóda hashCode().

Pre každý objekt JVM generuje jedinečné číslo, ktorým je hashcode. Vracia odlišné celé čísla pre odlišné objekty. Bežnou mylnou predstavou o tejto metóde je, že metóda hashCode() vracia adresu objektu, ktorá nie je správna. Konvertuje internú adresu objektu na celé číslo pomocou algoritmu. Metóda hashCode() je natívny pretože v Jave nie je možné nájsť adresu objektu, takže na nájdenie adresy objektu používa natívne jazyky ako C/C++.

Použitie metódy hashCode():

Vracia hodnotu hash, ktorá sa používa na vyhľadávanie objektov v kolekcii. JVM (Java Virtual Machine) používa metódu hashcode pri ukladaní objektov do dátových štruktúr súvisiacich s hashovaním, ako je HashSet HashMap Hashtable atď. Hlavnou výhodou ukladania objektov na základe hash kódu je, že vyhľadávanie sa stáva jednoduchým. 

Poznámka: Prepísať z hashCode() metódu je potrebné urobiť tak, že pre každý objekt vygenerujeme jedinečné číslo. Napríklad pre triedu Študent môžeme vrátiť rolku č. študenta z metódy hashCode(), keďže je jedinečná. 

Príklad:

public class Študent {

int roll;

@Prepísať

public int hashCode() {

spätný kotúč;

}

}

Vysvetlenie: The hashCode() metóda je prepísaná, aby vrátila vlastnú hodnotu hash na základe hodu objektu Študent.

3. Metóda rovná sa (Object obj).

The rovná sa() metóda porovnáva daný objekt s aktuálnym objektom. Na definovanie vlastných podmienok rovnosti sa odporúča prepísať túto metódu.

Poznámka: Vo všeobecnosti je potrebné prepísať hashCode() vždy, keď je táto metóda prepísaná, aby sa zachovala všeobecná zmluva pre metódu hashCode, ktorá uvádza, že rovnaké objekty musia mať rovnaké hash kódy. 

Príklad:

public class Študent {

int roll;


@Prepísať

public boolean rovná sa(Objekt o) {

if (o instanceof Student) {

return this.roll == ((Študent) o).roll;

}

vrátiť nepravdu;

}

}

Vysvetlenie: The rovná sa() metóda je prepísaná na porovnanie rolovať medzi dvoma študentskými objektmi.

4. metóda getClass().

The getClass() metóda vracia objekt triedy 'toto' objektu a používa sa na získanie skutočnej runtime triedy objektu. Môže sa použiť aj na získanie metadát tejto triedy. Vrátený objekt Class je objekt, ktorý je uzamknutý statickými synchronizovanými metódami reprezentovanej triedy. Keďže je konečný, neprepíšeme ho.

Príklad:

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  ());      }   }   

Výstup
Class of Object o is: java.lang.String  

Vysvetlenie: The getClass() metóda sa používa na tlač runtime triedy objektu 'o'.

Poznámka: Po načítaní súboru .class JVM vytvorí objekt typu java.lang.Class v oblasti Haldy. Tento objekt triedy môžeme použiť na získanie informácií na úrovni triedy. Je široko používaný v Reflexia  

5. metóda finalize().

The finalizovať () metóda sa volá tesne predtým, ako sa objekt pozbiera. Nazýva sa to Zberač odpadu na objekte, keď zberač odpadu zistí, že už neexistujú žiadne odkazy na objekt. Mali by sme prepísať metódu finalize(), aby sme odstránili systémové prostriedky, vykonali činnosti čistenia a minimalizovali úniky pamäte. Napríklad pred zničením servletových objektov sa webový kontajner vždy nazýva finalizačná metóda na vykonanie čistiacich činností relácie. 

Poznámka: Metóda finalizácie sa nazýva just raz na objekt, aj keď je tento objekt vhodný na zber odpadu viackrát. 

Príklad:

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'  );      }   }   

Výstup
1510467688 end finalize method called  

Vysvetlenie: The finalizovať () metóda sa volá tesne predtým, ako sa objekt pozbiera.

6. metóda clone(). 

The klon() metóda vytvorí a vráti nový objekt, ktorý je kópiou aktuálneho objektu.

Príklad:

public class Book implements Cloneable {

private String t; //názov


verejná kniha (reťazec t) {

this.t = t;

}

@Prepísať

public Object clone() vyvolá CloneNotSupportedException {

return super.clone();

}

}

Vysvetlenie: The klon() metóda je prepísaná, aby vrátila klonovanú kópiu súboru Knižný predmet .

7. Metódy súbežnosti: wait() notify() a notifyAll()

Tieto metódy súvisia s vlákno Komunikácia v jazyku Java . Používajú sa na to, aby vlákna čakali alebo upozornili ostatných pri súbežnom programovaní.

Príklad použitia všetkých metód tried objektov v jazyku 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  ();      }   }   

Výstup
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  

Vysvetlenie: Vyššie uvedený príklad demonštruje použitie toString() equals() hashCode() a klon() metódy v Knižná trieda .