Objektklasse i Java

Objektklasse i Java

Objektklasse i Java er tilstede i java.lang pakke.

  • Hver klasse er direkte eller indirekte avledet fra Object-klassen. Hvis en klasse ikke utvider noen annen klasse, er det en direkte barneklasse av Java Object klasse og hvis den utvider en annen klasse, er den indirekte avledet.
  • Object-klassen gir flere metoder som f.eks toString() er lik() hashkode() og mange andre.
  • Objektklassen fungerer som en rot av arvehierarkiet i et hvilket som helst Java-program.

Her bruker vi toString() og hashkode() metoder for objektklassen å gi en egendefinert strengrepresentasjon for en klasse .

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

Produksjon
Person{name:'Geek'} 321001045  

Forklaring: I eksemplet ovenfor overstyrer vi toString() metode for å gi en tilpasset strengrepresentasjon av Person-klassen og bruk hashkode() metode for å vise standard hash-kodeverdi for objektet.

Objektklassemetoder

Objektklassen gir flere metoder som er som følger:

  • toString()-metoden
  • hashCode()-metoden
  • lik (Objekt obj) metode
  • finalize() metode
  • getClass()-metoden
  • clone() metode
  • wait() notify() notifyAll() (Samtidighetsmetoder)
Objektklassemetoder i Java

1. toString()-metoden

De toString() gir en strengrepresentasjon av et objekt og brukes til å konvertere et objekt til en streng. Standard toString()-metoden for klassen Object returnerer en streng som består av navnet på klassen som objektet er en forekomst av, at-tegnet tegnet `@' og den usignerte heksadesimale representasjonen av hash-koden til objektet.

Note: Hver gang vi prøver å skrive ut en objektreferanse, kalles internt toString()-metoden.

Eksempel:

offentlig klasse Student {

public String toString() {

returner 'Studentobjekt';

}

}

Forklaring: Metoden toString() overstyres for å returnere en egendefinert strengrepresentasjon av Student-objektet.

2. hashCode() Metode

For hvert objekt genererer JVM et unikt nummer som er en hashkode. Den returnerer distinkte heltall for distinkte objekter. En vanlig misforståelse om denne metoden er at hashCode()-metoden returnerer adressen til objektet som ikke er riktig. Den konverterer den interne adressen til objektet til et heltall ved å bruke en algoritme. Metoden hashCode() er innfødt fordi i Java er det umulig å finne adressen til et objekt, så det bruker morsmål som C/C++ for å finne adressen til objektet.

Bruk av hashCode()-metoden:

Den returnerer en hash-verdi som brukes til å søke i objekter i en samling. JVM (Java Virtual Machine) bruker hashkode-metoden mens du lagrer objekter i hashing-relaterte datastrukturer som HashSet HashMap Hashtable etc. Hovedfordelen med å lagre objekter basert på hash-kode er at det blir enkelt å søke. 

Note: Overstyring av hashkode() metoden må gjøres slik at for hvert objekt genererer vi et unikt tall. For eksempel for en studentklasse kan vi returnere rullenr. av en student fra hashCode()-metoden siden den er unik. 

Eksempel:

offentlig klasse Student {

int rulle;

@Overstyr

public int hashCode() {

rulle tilbake;

}

}

Forklaring: De hashkode() metoden overstyres for å returnere en egendefinert hash-verdi basert på rullen til Student-objektet.

3. lik(Objekt obj) Metode

De lik() metoden sammenligner det gitte objektet med det gjeldende objektet. Det anbefales å overstyre denne metoden for å definere tilpassede likhetsbetingelser.

Note: Det er generelt nødvendig å overstyre hashkode() metode når denne metoden overstyres for å opprettholde den generelle kontrakten for hashCode-metoden som sier at like objekter må ha like hash-koder. 

Eksempel:

offentlig klasse Student {

int rulle;


@Overstyr

offentlig boolsk lik(Objekt o) {

if (o instans av student) {

returnere denne.rulle == ((Student) o).rulle;

}

returner falsk;

}

}

Forklaring: De lik() metoden overstyres for å sammenligne rulle mellom to studentobjekter.

4. getClass()-metoden

De getClass() metoden returnerer klasseobjektet til 'dette' objektet og brukes til å få den faktiske kjøretidsklassen til objektet. Den kan også brukes til å hente metadata for denne klassen. Det returnerte klasseobjektet er objektet som er låst av statiske synkroniserte metoder for den representerte klassen. Siden den er endelig, så overstyrer vi den ikke.

Eksempel:

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

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

Forklaring: De getClass() metoden brukes til å skrive ut kjøretidsklassen til 'o'-objektet.

Note: Etter å ha lastet en .class-fil vil JVM opprette et objekt av typen java.lang.Klasse i Heap-området. Vi kan bruke dette klasseobjektet for å få informasjon på klassenivå. Det er mye brukt i Speilbilde  

5. finalize() metode

De fullføre() metoden kalles rett før en gjenstand samles inn som søppel. Det kalles Søppelsamler på en gjenstand når søppelsamleren fastslår at det ikke er flere referanser til gjenstanden. Vi bør overstyre finalize()-metoden for å disponere systemressurser, utføre oppryddingsaktiviteter og minimere minnelekkasjer. For eksempel før ødeleggelse av Servlet-objekter nettcontainer alltid kalt finalize-metoden for å utføre oppryddingsaktiviteter i økten. 

Note: Finaliseringsmetoden kalles bare en gang på en gjenstand selv om den gjenstanden er kvalifisert for søppelhenting flere ganger. 

Eksempel:

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

Produksjon
1510467688 end finalize method called  

Forklaring: De fullføre() metoden kalles rett før objektet samles opp.

6. klone() metode 

De klone() metoden oppretter og returnerer et nytt objekt som er en kopi av det gjeldende objektet.

Eksempel:

public class Book implementerer Cloneable {

privat String t; //tittel


offentlig bok(streng t) {

dette.t = t;

}

@Overstyr

public Object clone() kaster CloneNotSupportedException {

returner super.clone();

}

}

Forklaring: De klone() metoden overstyres for å returnere en klonet kopi av Bokobjekt .

7. Samtidighetsmetoder: wait() notify() og notifyAll()

Disse metodene er relatert til tråd Kommunikasjon i Java . De brukes til å få tråder til å vente eller varsle andre i samtidig programmering.

Eksempel på bruk av alle objektklassemetodene i 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  ();      }   }   

Produksjon
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  

Forklaring: Eksemplet ovenfor demonstrerer bruken av toString() lik() hashCode() og klone() metoder i Bokklasse .