Klasa obiektu w Javie

Klasa obiektu w Javie

Klasa obiektu w Javie jest obecny w java.lang pakiet.

  • Każda klasa wywodzi się bezpośrednio lub pośrednio z klasy Object. Jeśli klasa nie rozszerza żadnej innej klasy, jest to bezpośrednia klasa potomna Klasa obiektu Java a jeśli rozszerza inną klasę, to jest pośrednio wyprowadzona.
  • Klasa Object udostępnia kilka metod, takich jak toString() równa się() hashCode() i wiele innych.
  • Klasa Object pełni rolę korzenia hierarchii dziedziczenia w dowolnym programie Java.

Tutaj używamy doString() I hashCode() metody klasy Object aby zapewnić niestandardową reprezentację ciągu dla klasy .

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

Wyjście
Person{name:'Geek'} 321001045  

Wyjaśnienie: W powyższym przykładzie nadpisujemy doString() metoda zapewnienia a niestandardowa reprezentacja ciągu klasy Person i skorzystaj z hashCode() metoda wyświetlania domyślnej wartości kodu skrótu obiektu.

Metody klas obiektów

Klasa Object udostępnia wiele metod, które są następujące:

  • metoda toString().
  • metoda hashCode().
  • metoda równa się (obiekt obiektu).
  • metoda finalizacji().
  • metodę getClass().
  • metoda klonowania().
  • wait() notify() notifyAll() (Metody współbieżności)
Metody klas obiektów w Javie

1. Metoda toString().

The doString() zapewnia ciąg znaków reprezentujący obiekt i służy do konwersji obiektu na ciąg. Domyślna metoda toString() dla klasy Obiekt zwraca ciąg składający się z nazwy klasy, której instancją jest obiekt, znaku at `@' i szesnastkowej reprezentacji kodu skrótu obiektu bez znaku.

Notatka: Za każdym razem, gdy próbujemy wydrukować dowolne odwołanie do obiektu, wywoływana jest wewnętrznie metoda toString().

Przykład:

klasa publiczna Student {

publiczny ciąg toString() {

zwróć „Obiekt ucznia”;

}

}

Wyjaśnienie: Metoda toString() została zastąpiona w celu zwrócenia niestandardowej reprezentacji ciągu obiektu Studenta w postaci ciągu znaków.

2. Metoda hashCode().

Dla każdego obiektu JVM generuje unikalny numer będący hashcodem. Zwraca różne liczby całkowite dla różnych obiektów. Powszechnym błędnym przekonaniem na temat tej metody jest to, że metoda hashCode() zwraca adres obiektu, który jest nieprawidłowy. Konwertuje wewnętrzny adres obiektu na liczbę całkowitą za pomocą algorytmu. Metoda hashCode() to rodzinny ponieważ w Javie nie można znaleźć adresu obiektu, dlatego do znalezienia adresu obiektu używa się języków rodzimych, takich jak C/C++.

Zastosowanie metody hashCode():

Zwraca wartość skrótu, która jest używana do wyszukiwania obiektów w kolekcji. JVM (Java Virtual Machine) wykorzystuje metodę hashcode podczas zapisywania obiektów w strukturach danych związanych z hashowaniem, takich jak HashSet HashMap Hashtable itp. Główną zaletą zapisywania obiektów w oparciu o kod skrótu jest to, że wyszukiwanie staje się łatwe. 

Notatka: Zastąpienie hashCode() metodę należy wykonać w taki sposób, aby dla każdego obiektu wygenerować unikalny numer. Przykładowo dla klasy Student możemy zwrócić rolkę nr. ucznia z metody hashCode(), ponieważ jest ona unikalna. 

Przykład:

klasa publiczna Student {

int rolka;

@Prześcigać

publiczny int hashCode() {

rolka zwrotna;

}

}

Wyjaśnienie: The hashCode() metoda jest zastępowana, aby zwrócić niestandardową wartość skrótu na podstawie wyniku obiektu Studenta.

3. Metoda równa się (obiekt obiektu).

The równa się() metoda porównuje dany obiekt z obiektem bieżącym. Zaleca się zastąpienie tej metody w celu zdefiniowania niestandardowych warunków równości.

Notatka: Ogólnie rzecz biorąc, konieczne jest zastąpienie hashCode() method za każdym razem, gdy ta metoda zostanie zastąpiona, aby zachować ogólną umowę dla metody hashCode, która stwierdza, że ​​równe obiekty muszą mieć takie same kody skrótu. 

Przykład:

klasa publiczna Student {

int rolka;


@Prześcigać

publiczna wartość logiczna równa się (obiekt o) {

if (o instancja Studenta) {

zwróć to.roll == ((Student) o).roll;

}

zwróć fałsz;

}

}

Wyjaśnienie: The równa się() metoda jest zastępowana w celu porównania rolka pomiędzy dwoma obiektami Studenta.

4. Metoda getClass().

The pobierzKlasę() metoda zwraca obiekt klasy „tego” obiektu i służy do uzyskania rzeczywistej klasy środowiska wykonawczego obiektu. Można go również użyć do uzyskania metadanych tej klasy. Zwrócony obiekt klasy to obiekt zablokowany przez statyczne, zsynchronizowane metody reprezentowanej klasy. Ponieważ jest to ostateczne, nie możemy go zastępować.

Przykład:

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

Wyjście
Class of Object o is: java.lang.String  

Wyjaśnienie: The pobierzKlasę() Metoda służy do wydrukowania klasy wykonawczej obiektu „o”.

Notatka: Po załadowaniu pliku .class JVM utworzy obiekt tego typu Java.lang.Class w obszarze Kopca. Możemy użyć tego obiektu klasy, aby uzyskać informacje na poziomie klasy. Jest szeroko stosowany w Odbicie  

5. metoda finalize().

The sfinalizować() Metoda jest wywoływana tuż przed wyrzuceniem obiektu ze śmieci. Nazywa się to Zbieracz śmieci na obiekcie, gdy moduł zbierający elementy bezużyteczne ustali, że nie ma już żadnych odniesień do obiektu. Powinniśmy zastąpić metodę finalize(), aby pozbyć się zasobów systemowych, wykonać czynności porządkowe i zminimalizować wycieki pamięci. Na przykład przed zniszczeniem kontenera WWW obiektów serwletu zawsze wywoływana jest metoda finalizacji w celu wykonania czynności czyszczących sesję. 

Notatka: Metoda finalizacji nazywa się just raz na obiekcie, mimo że obiekt ten kwalifikuje się do wielokrotnego usuwania elementów bezużytecznych. 

Przykład:

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

Wyjście
1510467688 end finalize method called  

Wyjaśnienie: The sfinalizować() metoda jest wywoływana tuż przed usunięciem obiektu ze śmieci.

6. metoda clone(). 

The klon() metoda tworzy i zwraca nowy obiekt będący kopią bieżącego obiektu.

Przykład:

klasa publiczna Książka implementuje Cloneable {

prywatny Ciąg t; //tytuł


książka publiczna(String t) {

to.t = t;

}

@Prześcigać

obiekt publiczny clone() zgłasza wyjątek CloneNotSupportedException {

zwróć super.clone();

}

}

Wyjaśnienie: The klon() metoda jest zastępowana, aby zwrócić sklonowaną kopię pliku Obiekt książkowy .

7. Metody współbieżności: wait() notify() i notifyAll()

Metody te są powiązane wątek Komunikacja w Javie . Używane są do tego, aby wątki czekały lub powiadamiały inne osoby w programowaniu współbieżnym.

Przykład użycia wszystkich metod klas obiektów w Javie

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

Wyjście
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  

Wyjaśnienie: Powyższy przykład ilustruje użycie doString() równa się() hashCode() I klon() metody w Klasa książki .