Обектен клас в Java

Обектен клас в Java

Клас обект в Java присъства в java.lang пакет.

  • Всеки клас е пряко или косвено извлечен от класа Object. Ако даден клас не разширява друг клас, тогава той е директен дъщерен клас на Обектен клас на Java и ако разширява друг клас, тогава той е индиректно извлечен.
  • Класът Object предоставя няколко метода, като напр toString() е равно на () hashCode() и много други.
  • Класът Object действа като корен на йерархията на наследяване във всяка Java програма.

Тук използваме toString() и hashCode() методи на класа Object за предоставяне на персонализирано низово представяне за клас .

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

Изход
Person{name:'Geek'} 321001045  

Обяснение: В горния пример ние отменяме toString() метод за предоставяне на a персонализирано низово представяне на класа Person и използвайте hashCode() метод за показване на стойността на хеш кода по подразбиране на обекта.

Методи на клас обекти

Класът Object предоставя множество методи, които са както следва:

  • toString() метод
  • метод hashCode().
  • метод equals(Object obj).
  • finalize() метод
  • getClass() метод
  • метод clone().
  • wait() notify() notifyAll() (Методи за едновременност)
Методи на клас обекти в Java

1. Метод toString().

The toString() предоставя String представяне на обект и се използва за преобразуване на обект в String. Методът toString() по подразбиране за клас Object връща низ, състоящ се от името на класа, чийто екземпляр е обектът, символа за знак `@' и шестнадесетичното представяне без знак на хеш кода на обекта.

Забележка: Всеки път, когато се опитаме да отпечатаме препратка към обект, тогава вътрешно се извиква методът toString().

Пример:

публичен клас Студент {

public String toString() {

върне 'Обект на ученик';

}

}

Обяснение: Методът toString() е заменен, за да върне персонализирано низово представяне на обекта Student.

2. Метод hashCode().

За всеки обект JVM генерира уникален номер, който е хешкод. Той връща отделни цели числа за различни обекти. Често срещано погрешно схващане за този метод е, че методът hashCode() връща адреса на обекта, който не е правилен. Той преобразува вътрешния адрес на обекта в цяло число с помощта на алгоритъм. Методът hashCode() е роден защото в Java е невъзможно да се намери адресът на обект, така че той използва родни езици като C/C++, за да намери адреса на обекта.

Използване на метода hashCode():

Той връща хеш стойност, която се използва за търсене на обекти в колекция. JVM (Java Virtual Machine) използва метода на хеш кода, докато записва обекти в свързани с хеширането структури от данни като HashSet HashMap Hashtable и т.н. Основното предимство на запазването на обекти въз основа на хеш код е, че търсенето става лесно. 

Забележка: Замяна на hashCode() методът трябва да бъде направен така, че за всеки обект да генерираме уникален номер. Например за ученически клас можем да върнем списъка №. на студент от метода hashCode(), тъй като е уникален. 

Пример:

публичен клас Студент {

int roll;

@Override

public int hashCode() {

обратна ролка;

}

}

Обяснение: The hashCode() методът се отменя, за да върне персонализирана хеш стойност въз основа на ролката на обекта Student.

3. метод равен на (Object obj).

The равно на () методът сравнява дадения обект с текущия обект. Препоръчително е да замените този метод, за да дефинирате персонализирани условия за равенство.

Забележка: Обикновено е необходимо да се отмени hashCode() всеки път, когато този метод се отменя, за да се поддържа общият договор за метода hashCode, който гласи, че еднаквите обекти трябва да имат еднакви хеш кодове. 

Пример:

публичен клас Студент {

int roll;


@Override

public boolean equals(Object o) {

if (o instanceof Student) {

return this.roll == ((Студент) o).roll;

}

връща невярно;

}

}

Обяснение: The равно на () методът се отменя за сравнение ролка между два обекта Student.

4. метод getClass().

The getClass() връща обекта на класа на обекта „този“ и се използва за получаване на действителния клас по време на изпълнение на обекта. Може да се използва и за получаване на метаданни от този клас. Върнатият Class обект е обектът, който е заключен от статични синхронизирани методи на представения клас. Тъй като е окончателен, не го отменяме.

Пример:

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

Изход
Class of Object o is: java.lang.String  

Обяснение: The getClass() се използва за отпечатване на класа по време на изпълнение на обекта „o“.

Забележка: След зареждане на .class файл JVM ще създаде обект от типа java.lang.Class в района на Грамадата. Можем да използваме този клас обект, за да получим информация за ниво клас. Намира широко приложение в Отражение  

5. метод finalize().

The финализирам() методът се извиква точно преди даден обект да бъде събран боклук. Нарича се Събирач на боклук върху обект, когато събирачът на отпадъци определи, че няма повече препратки към обекта. Трябва да заменим метода finalize(), за да изхвърлим системните ресурси, да извършим дейности по почистване и да минимизираме изтичането на памет. Например преди унищожаването на уеб контейнера на Servlet обекти винаги се нарича finalize метод за извършване на дейности по почистване на сесията. 

Забележка: Методът за финализиране се нарича просто веднъж на обект, въпреки че този обект отговаря на условията за събиране на боклук многократно. 

Пример:

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

Изход
1510467688 end finalize method called  

Обяснение: The финализирам() методът се извиква точно преди обектът да бъде събран.

6. метод clone(). 

The клонинг() създава и връща нов обект, който е копие на текущия обект.

Пример:

public class Book implements Cloneable {

частен низ t; //заглавие


публична книга (низ t) {

this.t = t;

}

@Override

public Object clone() хвърля CloneNotSupportedException {

върнете super.clone();

}

}

Обяснение: The клонинг() методът се отменя, за да върне клонирано копие на Обект книга .

7. Методи за едновременност: wait() notify() и notifyAll()

Тези методи са свързани с нишка Комуникация в Java . Те се използват, за да накарат нишките да чакат или да уведомят другите при едновременно програмиране.

Пример за използване на всички методи на клас обекти в 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  ();      }   }   

Изход
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  

Обяснение: Горният пример демонстрира използването на toString() равно() hashCode() и клонинг() методи в Книжен клас .


Може Да Ви Хареса