Objektu klase Java valodā

Objektu klase Java valodā

Objektu klase Java ir klāt java.lang iepakojums.

  • Katra klase ir tieši vai netieši atvasināta no objektu klases. Ja klase nepaplašina nevienu citu klasi, tad tā ir tieša bērnklase Java objektu klase un, ja tas paplašina citu klasi, tad tas ir netieši atvasināts.
  • Objektu klase nodrošina vairākas metodes, piemēram toString()equals() hashCode() un daudzi citi.
  • Objektu klase darbojas kā mantojuma hierarhijas sakne jebkurā Java programmā.

Šeit mēs izmantojam toString() un hashCode() Objektu klases metodes lai klasei nodrošinātu pielāgotu virknes attēlojumu .

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

Izvade
Person{name:'Geek'} 321001045  

Paskaidrojums: Iepriekš minētajā piemērā mēs ignorējam toString() metode, kā nodrošināt a Personas klases pielāgotas virknes attēlojums un izmantojiet hashCode() metode, lai parādītu objekta noklusējuma jaucējkoda vērtību.

Objektu klases metodes

Objektu klase nodrošina vairākas metodes, kas ir šādas:

  • toString() metode
  • hashCode() metode
  • vienāds(Object obj) metode
  • finalize() metode
  • getClass() metode
  • klona() metode
  • gaidīt() notify() notifyAll() (vienlaicīguma metodes)
Objektu klases metodes Java

1. toString() metode

The toString() nodrošina objekta virknes attēlojumu un tiek izmantots, lai pārvērstu objektu par virkni. Noklusējuma metode toString() klasei Object atgriež virkni, kas sastāv no tās klases nosaukuma, kuras gadījums ir objekts, at-zīmes rakstzīmes '@' un objekta jaucējkoda neparakstīta heksadecimālā attēlojuma.

Piezīme: Ikreiz, kad mēģinām izdrukāt kādu objekta atsauci, iekšēji tiek izsaukta metode toString().

Piemērs:

publiskā klase Students {

public String toString() {

atgriezt 'Studentu objekts';

}

}

Paskaidrojums: Metode toString() tiek ignorēta, lai atgrieztu studenta objekta pielāgotu virknes attēlojumu.

2. hashCode() metode

Katram objektam JVM ģenerē unikālu numuru, kas ir hashcode. Tas atgriež atšķirīgus veselus skaitļus atsevišķiem objektiem. Izplatīts nepareizs priekšstats par šo metodi ir tāds, ka metode hashCode() atgriež objekta adresi, kas nav pareiza. Tas pārvērš objekta iekšējo adresi veselā skaitlī, izmantojot algoritmu. HashCode() metode ir dzimtā jo Java nav iespējams atrast objekta adresi, tāpēc tā izmanto dzimtās valodas, piemēram, C/C++, lai atrastu objekta adresi.

HashCode() metodes izmantošana:

Tas atgriež jaucējvērtību, kas tiek izmantota, lai meklētu objektus kolekcijā. JVM (Java Virtual Machine) izmanto jaucējkoda metodi, vienlaikus saglabājot objektus ar jaukšanu saistītās datu struktūrās, piemēram, HashSet HashMap Hashtable utt. Galvenā priekšrocība, saglabājot objektus, pamatojoties uz jaucējkodu, ir tā, ka meklēšana kļūst vienkārša. 

Piezīme: Ignorēt hashCode() metode ir jādara tā, lai katram objektam mēs ģenerētu unikālu numuru. Piemēram, Studentu klasei mēs varam atgriezt ruļļa Nr. studenta no hashCode() metodes, jo tā ir unikāla. 

Piemērs:

publiskā klase Students {

int roll;

@Override

public int hashCode() {

atgriešanas rullis;

}

}

Paskaidrojums: The hashCode() metode tiek ignorēta, lai atgrieztu pielāgotu jaucējvērtību, pamatojoties uz studenta objekta rulli.

3. vienāds(Object obj) Metode

The vienāds () metode salīdzina doto objektu ar pašreizējo objektu. Ieteicams ignorēt šo metodi, lai definētu pielāgotus vienlīdzības nosacījumus.

Piezīme: Parasti ir nepieciešams ignorēt hashCode() metodi ikreiz, kad šī metode tiek ignorēta, lai saglabātu vispārējo līgumu par hashCode metodi, kas nosaka, ka vienādiem objektiem jābūt vienādiem jaucējkodiem. 

Piemērs:

publiskā klase Students {

int roll;


@Override

publiskais Būla ir vienāds(Object o) {

if (o instanceof Student) {

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

}

return false;

}

}

Paskaidrojums: The vienāds () metode tiek ignorēta, lai salīdzinātu roll starp diviem Studentu objektiem.

4. getClass() metode

The getClass() metode atgriež “šī” objekta klases objektu un tiek izmantota, lai iegūtu objekta faktisko izpildlaika klasi. To var izmantot arī šīs klases metadatu iegūšanai. Atgrieztais klases objekts ir objekts, kas ir bloķēts ar pārstāvētās klases statiskām sinhronizētām metodēm. Tā kā tas ir galīgs, mēs to nepārkāpjam.

Piemērs:

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

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

Paskaidrojums: The getClass() metode tiek izmantota, lai drukātu 'o' objekta izpildlaika klasi.

Piezīme: Pēc .class faila ielādes JVM izveidos šāda veida objektu java.lang.Class Kaudzes apgabalā. Mēs varam izmantot šo klases objektu, lai iegūtu klases līmeņa informāciju. To plaši izmanto Atspulgs  

5. finalize() metode

The pabeigt () metode tiek izsaukta tieši pirms objekta savākšanas. To sauc par Atkritumu savācējs uz objekta, kad atkritumu savācējs konstatē, ka uz objektu vairs nav atsauces. Mums vajadzētu ignorēt finalize() metodi, lai atbrīvotos no sistēmas resursiem, veiktu tīrīšanas darbības un samazinātu atmiņas noplūdes. Piemēram, pirms Servlet objektu iznīcināšanas tīmekļa konteiners vienmēr tiek saukts par pabeigšanas metodi, lai veiktu sesijas tīrīšanas darbības. 

Piezīme: Pabeigšanas metodi sauc par taisnīgu vienreiz uz objekta, pat ja šis objekts ir piemērots atkritumu savākšanai vairākas reizes. 

Piemērs:

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

Izvade
1510467688 end finalize method called  

Paskaidrojums: The pabeigt () metode tiek izsaukta tieši pirms objekta savākšanas.

6. klona() metode 

The klons () metode izveido un atgriež jaunu objektu, kas ir pašreizējā objekta kopija.

Piemērs:

public class Grāmatu rīki Cloneable {

privātā String t; //nosaukums


publiska grāmata(virkne t) {

this.t = t;

}

@Override

public Object clone() met CloneNotSupportedException {

atgriezties super.clone();

}

}

Paskaidrojums: The klons () metode tiek ignorēta, lai atgrieztu klonētu kopiju Grāmatas objekts .

7. Vienlaicības metodes: gaidiet() notify() un notifyAll()

Šīs metodes ir saistītas ar pavediens Saziņa Java . Tos izmanto, lai liktu pavedieniem gaidīt vai paziņot citiem vienlaicīgas programmēšanas laikā.

Piemērs visu Java objektu klases metožu izmantošanai

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

Izvade
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  

Paskaidrojums: Iepriekš minētais piemērs parāda izmantošanu toString() vienāds() hashCode() un klons () metodes sadaļā Grāmatu klase .