logo

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

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

javascript печат
  • Всеки клас е пряко или косвено извлечен от класа 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' title=

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() и клонинг() методи в Книжен клас .