Třída objektů v Javě

Třída objektů v Javě

Třída objektu v Javě je přítomen v java.lang balík.

  • Každá třída je přímo nebo nepřímo odvozena od třídy Object. Pokud třída nerozšiřuje žádnou jinou třídu, pak je přímo podřízenou třídou třídy Třída Java Object a pokud rozšiřuje další třídu, pak je nepřímo odvozena.
  • Třída Object poskytuje několik metod, jako např toString()se rovná() hashCode() a mnoho dalších.
  • Třída Object funguje jako kořen hierarchie dědičnosti v jakémkoli programu Java.

Zde používáme toString() a hashCode() metody třídy Object poskytnout vlastní řetězcovou reprezentaci pro třídu .

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  

Vysvětlení: Ve výše uvedeném příkladu přepíšeme toString() způsob poskytování a vlastní řetězcová reprezentace třídy Person a používat hashCode() metoda k zobrazení výchozí hodnoty hash kódu objektu.

Metody tříd objektů

Třída Object poskytuje několik metod, které jsou následující:

  • metoda toString().
  • metoda hashCode().
  • metoda equals(Object obj).
  • metoda finalize().
  • metoda getClass().
  • metoda clone().
  • wait() notify() notifyAll() (Metody souběžnosti)
Metody tříd objektů v Javě

1. Metoda toString().

The toString() poskytuje String reprezentaci objektu a používá se k převodu objektu na String. Výchozí metoda toString() pro třídu Object vrací řetězec sestávající z názvu třídy, jejíž instancí je objekt, znaku zavináče `@' a hexadecimální reprezentace hašovacího kódu objektu bez znaménka.

Poznámka: Kdykoli se pokusíme vytisknout jakoukoli referenci na objekt, je interně zavolána metoda toString().

Příklad:

public class Student {

public String toString() {

return 'Studentský objekt';

}

}

Vysvětlení: Metoda toString() je přepsána, aby vrátila vlastní řetězcovou reprezentaci objektu Student.

2. Metoda hashCode().

Pro každý objekt JVM generuje jedinečné číslo, což je hashcode. Vrací odlišná celá čísla pro odlišné objekty. Obvyklá mylná představa o této metodě je, že metoda hashCode() vrací adresu objektu, která není správná. Převádí vnitřní adresu objektu na celé číslo pomocí algoritmu. Metoda hashCode() je rodák protože v Javě je nemožné najít adresu objektu, takže k nalezení adresy objektu používá nativní jazyky jako C/C++.

Použití metody hashCode():

Vrací hodnotu hash, která se používá k vyhledávání objektů v kolekci. JVM (Java Virtual Machine) používá metodu hashcode při ukládání objektů do datových struktur souvisejících s hashováním, jako je HashSet HashMap Hashtable atd. Hlavní výhodou ukládání objektů na základě hash kódu je snadné vyhledávání. 

Poznámka: Přepsat z hashCode() metoda musí být provedena tak, že pro každý objekt vygenerujeme jedinečné číslo. Například pro třídu Student můžeme vrátit číslo role. studenta z metody hashCode(), protože je jedinečná. 

Příklad:

public class Student {

vnitřní role;

@Přepsat

public int hashCode() {

zpětný válec;

}

}

Vysvětlení: The hashCode() metoda je přepsána, aby vrátila vlastní hodnotu hash na základě hodu objektu Student.

3. Metoda se rovná(Objekt objektu).

The rovná se() metoda porovná daný objekt s aktuálním objektem. Chcete-li definovat vlastní podmínky rovnosti, doporučujeme tuto metodu přepsat.

Poznámka: Obecně je nutné přepsat hashCode() vždy, když je tato metoda přepsána, aby byla zachována obecná smlouva pro metodu hashCode, která uvádí, že stejné objekty musí mít stejné hash kódy. 

Příklad:

public class Student {

vnitřní role;


@Přepsat

public boolean se rovná(Objekt o) {

if (o instanceof Student) {

return this.roll == ((Student) o).roll;

}

vrátit false;

}

}

Vysvětlení: The rovná se() metoda je přepsána pro porovnání role mezi dvěma Studentskými objekty.

4. metoda getClass().

The getClass() metoda vrací objekt třídy 'toto' objektu a používá se k získání skutečné runtime třídy objektu. Lze jej také použít k získání metadat této třídy. Vrácený objekt Class je objekt, který je uzamčen statickými synchronizovanými metodami reprezentované třídy. Protože je konečná, nepřepíšeme ji.

Pří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  

Vysvětlení: The getClass() metoda se používá k tisku runtime třídy objektu 'o'.

Poznámka: Po načtení souboru .class JVM vytvoří objekt typu java.lang.Class v oblasti haldy. Tento objekt třídy můžeme použít k získání informací na úrovni třídy. Je široce používán v Odraz  

5. metoda finalize().

The dokončit() metoda je volána těsně předtím, než je objekt shromážděn. Říká se tomu Sběratel odpadků na objektu, když garbage collector určí, že na objekt již nejsou žádné odkazy. Měli bychom přepsat metodu finalize(), abychom zlikvidovali systémové prostředky, provedli činnosti čištění a minimalizovali úniky paměti. Například před zničením webového kontejneru objektů Servlet se vždy nazývá metoda finalizace, která provádí čištění relace. 

Poznámka: Metoda finalizace se nazývá just jednou na objektu, i když je tento objekt způsobilý pro úklid vícekrát. 

Pří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  

Vysvětlení: The dokončit() metoda je volána těsně předtím, než je objekt shromážděn.

6. metoda clone(). 

The klon() metoda vytvoří a vrátí nový objekt, který je kopií aktuálního objektu.

Příklad:

public class Kniha implementuje Cloneable {

private String t; //titul


veřejná kniha (řetězec t) {

this.t = t;

}

@Přepsat

public Object clone() vyvolá CloneNotSupportedException {

return super.clone();

}

}

Vysvětlení: The klon() metoda je přepsána, aby vrátila klonovanou kopii souboru Knižní objekt .

7. Souběžné metody: wait() notify() a notifyAll()

Tyto metody souvisí s vlákno Komunikace v Javě . Používají se k tomu, aby vlákna čekala nebo aby upozornila ostatní při souběžném programování.

Příklad použití všech metod tříd objektů v Javě

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  

Vysvětlení: Výše uvedený příklad demonstruje použití toString() equals() hashCode() a klon() metody v Knižní třída .