logo

Objektu klase Java valodā

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

komanda chown
  • 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' title=

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 .