Objektna klasa u Javi

Objektna klasa u Javi

Klasa objekta u Javi je prisutan u java.lang paket.

  • Svaka klasa je izravno ili neizravno izvedena iz klase Object. Ako klasa ne proširuje nijednu drugu klasu, onda je to izravna podređena klasa klase Java objektna klasa a ako proširuje drugu klasu onda je neizravno izvedena.
  • Klasa Object nudi nekoliko metoda kao što su toString()jednako() hashCode() i mnogi drugi.
  • Klasa Object djeluje kao korijen hijerarhije nasljeđivanja u bilo kojem Java programu.

Ovdje koristimo toString() i hashCode() metode klase Objekt za pružanje prilagođene reprezentacije niza za klasu .

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

Izlaz
Person{name:'Geek'} 321001045  

Obrazloženje: U gornjem primjeru poništavamo toString() način pružanja a prilagođena string reprezentacija klase Person i koristite hashCode() metoda za prikaz zadane vrijednosti hash koda objekta.

Metode klase objekata

Klasa Object nudi više metoda koje su sljedeće:

  • toString() metoda
  • metoda hashCode().
  • equals(Object obj) metoda
  • metoda finalize().
  • metoda getClass().
  • clone() metoda
  • wait() notify() notifyAll() (metode istovremenosti)
Metode klase objekata u Javi

1. Metoda toString().

The toString() pruža String reprezentaciju objekta i koristi se za pretvaranje objekta u String. Zadana metoda toString() za klasu Object vraća niz koji se sastoji od naziva klase čiji je objekt instanca, znaka at-sign `@' i nepredznačenog heksadecimalnog prikaza hash koda objekta.

Bilješka: Svaki put kada pokušamo ispisati bilo koju referencu objekta tada se interno poziva metoda toString().

Primjer:

javna klasa Student {

public String toString() {

return 'Studentski objekt';

}

}

Obrazloženje: Metoda toString() nadjačana je kako bi vratila prilagođenu reprezentaciju niza objekta Student.

2. metoda hashCode().

Za svaki objekt JVM generira jedinstveni broj koji je hashcode. Vraća različite cijele brojeve za različite objekte. Uobičajena zabluda o ovoj metodi je da metoda hashCode() vraća adresu objekta koja nije točna. Pretvara internu adresu objekta u cijeli broj pomoću algoritma. Metoda hashCode() je domaći jer je u Javi nemoguće pronaći adresu objekta pa koristi izvorne jezike poput C/C++ da pronađe adresu objekta.

Upotreba metode hashCode():

Vraća hash vrijednost koja se koristi za pretraživanje objekata u zbirci. JVM (Java Virtual Machine) koristi metodu hashcode dok sprema objekte u podatkovne strukture povezane s hashiranjem kao što je HashSet HashMap Hashtable itd. Glavna prednost spremanja objekata na temelju hash koda je da pretraživanje postaje jednostavno. 

Bilješka: Nadjačavanje od hashCode() metodu treba napraviti tako da za svaki objekt generiramo jedinstveni broj. Na primjer, za razred učenika možemo vratiti rolu br. učenika iz metode hashCode() jer je jedinstvena. 

Primjer:

javna klasa Student {

int roll;

@Nadjačaj

public int hashCode() {

povratna rola;

}

}

Obrazloženje: The hashCode() metoda je nadjačana kako bi vratila prilagođenu hash vrijednost temeljenu na roli objekta Student.

3. jednako (Object obj) Metoda

The jednako() metoda uspoređuje dati objekt s trenutnim objektom. Preporuča se nadjačati ovu metodu za definiranje prilagođenih uvjeta jednakosti.

Bilješka: Općenito je potrebno nadjačati hashCode() kad god je ova metoda nadjačana kako bi se održao opći ugovor za metodu hashCode koji navodi da jednaki objekti moraju imati jednake hash kodove. 

Primjer:

javna klasa Student {

int roll;


@Nadjačaj

public Boolean equals(Object o) {

if (o instanceof Student) {

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

}

vratiti lažno;

}

}

Obrazloženje: The jednako() metoda je nadjačana radi usporedbe svitak između dva Studentova objekta.

4. metoda getClass().

The getClass() metoda vraća objekt klase 'ovog' objekta i koristi se za dobivanje stvarne klase vremena izvođenja objekta. Također se može koristiti za dobivanje metapodataka ove klase. Vraćeni objekt klase je objekt koji je zaključan statičkim sinkroniziranim metodama predstavljene klase. Budući da je konačan, ne poništavamo ga.

Primjer:

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

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

Obrazloženje: The getClass() metoda se koristi za ispis runtime klase 'o' objekta.

Bilješka: Nakon učitavanja .class datoteke JVM će stvoriti objekt tipa java.lang.Class na području Heapa. Ovaj objekt klase možemo koristiti za dobivanje informacija o razini klase. Naširoko se koristi u Odraz  

5. metoda finalize().

The finalizirati() metoda se poziva neposredno prije nego što se objekt skupi u smeće. Zove se Skupljač smeća na objektu kada sakupljač smeća utvrdi da više nema referenci na objekt. Trebali bismo nadjačati metodu finalize() da bismo raspolagali sistemskim resursima, izvršili aktivnosti čišćenja i minimizirali curenje memorije. Na primjer, prije uništavanja web-spremnika Servlet objekata uvijek se naziva metoda finalize za izvođenje aktivnosti čišćenja sesije. 

Bilješka: Metoda finaliziranja naziva se just jednom na objektu iako je taj objekt prikladan za skupljanje smeća više puta. 

Primjer:

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

Izlaz
1510467688 end finalize method called  

Obrazloženje: The finalizirati () metoda se poziva neposredno prije nego što se objekt skupi.

6. metoda clone(). 

The klon() metoda stvara i vraća novi objekt koji je kopija trenutnog objekta.

Primjer:

javna klasa Book implementira Cloneable {

privatni niz t; //titula


javna knjiga(niz t) {

this.t = t;

}

@Nadjačaj

public Object clone() baca CloneNotSupportedException {

vrati super.klon();

}

}

Obrazloženje: The klon() metoda je nadjačana da vrati kloniranu kopiju Objekt knjige .

7. Metode istovremenosti: wait() notify() i notifyAll()

Ove su metode povezane s niti Komunikacija u Javi . Koriste se da natjeraju niti da čekaju ili obavijeste druge u istodobnom programiranju.

Primjer korištenja svih metoda klase objekata u Javi

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

Izlaz
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  

Obrazloženje: Gornji primjer pokazuje upotrebu toString() jednako() hashCode() i klon() metode u Klasa knjige .