logo

Klasa obiektu w Javie

Obiekt klasa jest obecna w Java.lang pakiet. Każda klasa w Javie wywodzi się bezpośrednio lub pośrednio z klasy Obiekt klasa. Jeśli klasa nie rozszerza żadnej innej klasy, jest to bezpośrednia klasa potomna Obiekt a jeśli rozszerza inną klasę, to jest ona pośrednio wyprowadzona. Dlatego metody klasy Object są dostępne dla wszystkich klas Java. Dlatego klasa Object działa jako korzeń hierarchii dziedziczenia w dowolnym programie Java.

Klasa obiektu w Javie

Korzystanie z metod 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().
  • metody wait(), notify() notifyAll().

1. Metoda toString().

Funkcja toString() zapewnia reprezentację obiektu w postaci ciągu znaków i służy do konwersji obiektu na ciąg znaków. Domyślna metoda toString() dla klasy Object 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. Innymi słowy definiuje się go jako:

// Default behavior of toString() is to print class name, then // @, then unsigned hexadecimal representation of the hash code // of the object  public String toString() {  return getClass().getName() + '@' + Integer.toHexString(hashCode()); }>

Zawsze zaleca się zastąpienie doString() metodę, aby uzyskać własną reprezentację String obiektu. Więcej informacji na temat zastępowania metody toString() można znaleźć w – Zastępowanie toString() w Javie

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

Student s = new Student();  // Below two statements are equivalent System.out.println(s); System.out.println(s.toString());>

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, co nie jest poprawne. 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 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.

Jawa




// Java program to demonstrate working of> // hashCode() and toString()> public> class> Student {> >static> int> last_roll =>100>;> >int> roll_no;> >// Constructor> >Student()> >{> >roll_no = last_roll;> >last_roll++;> >}> >// Overriding hashCode()> >@Override> public> int> hashCode() {>return> roll_no; }> >// Driver code> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> >// Below two statements are equivalent> >System.out.println(s);> >System.out.println(s.toString());> >}> }>

konwencja nazewnictwa Java
>

>

Wyjście :

Student@64 Student@64>

Zauważ, że 4*160+ 6*161= 100

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

Porównuje dany obiekt z tym obiektem (obiektem, na którym wywoływana jest metoda). Daje ogólny sposób porównywania obiektów pod kątem równości. Zaleca się zastąpienie równa się (obiekt obiektu) metodę uzyskania własnego warunku równości na obiektach. Więcej informacji na temat zastępowania metody równości (Object obj) można znaleźć w – Zastępowanie metody równa się w Javie

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

4. Metoda getClass().

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ć.

Jawa




// Java program to demonstrate working of getClass()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Object obj =>new> String(>'GeeksForGeeks'>);> >Class c = obj.getClass();> >System.out.println(>'Class of Object obj is : '> >+ c.getName());> >}> }>

>

>

Wyjście:

Class of Object obj is : java.lang.String>

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().

Ta metoda jest wywoływana tuż przed usunięciem obiektu z pamięci. Nazywa się to Śmieciarz 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 nazywa się to metodą 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.

Jawa




// Java program to demonstrate working of finalize()> public> class> Test {> >public> static> void> main(String[] args)> >{> >Test t =>new> Test();> >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 finalize method called end>

6. metoda clone().

Zwraca nowy obiekt, który jest dokładnie taki sam jak ten obiekt. Aby zapoznać się z metodą clone(), zobacz Klon() .

system plików w Linuksie

Pozostałe trzy metody Czekać() , notyfikować() powiadomić wszystkich() są powiązane ze współbieżnością. Odnosić się do Komunikacja międzywątkowa w Javie dla szczegółów.

Przykład wykorzystania wszystkich metod klasy Object w Javie

Jawa




import> java.io.*;> public> class> Book>implements> Cloneable {> >private> String title;> >private> String author;> >private> int> year;> >public> Book(String title, String author,>int> year)> >{> >this>.title = title;> >this>.author = author;> >this>.year = year;> >}> >// Override the toString method> >@Override> public> String toString()> >{> >return> title +>' by '> + author +>' ('> + year +>')'>;> >}> >// Override the equals method> >@Override> public> boolean> equals(Object obj)> >{> >if> (obj ==>null> || !(obj>instanceof> Book)) {> >return> false>;> >}> >Book other = (Book)obj;> >return> this>.title.equals(other.getTitle())> >&&>this>.author.equals(other.getAuthor())> >&&>this>.year == other.getYear();> >}> >// Override the hashCode method> >@Override> public> int> hashCode()> >{> >int> result =>17>;> >result =>31> * result + title.hashCode();> >result =>31> * result + author.hashCode();> >result =>31> * result + year;> >return> result;> >}> >// 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> title; }> >public> String getAuthor() {>return> author; }> >public> int> getYear() {>return> year; }> >public> static> void> main(String[] args)> >{> >// Create a Book object and print its details> >Book book1 =>new> Book(> >'The Hitchhiker's Guide to the Galaxy'>,> >'Douglas Adams'>,>1979>);> >System.out.println(book1);> >// Create a clone of the Book object and print its> >// details> >Book book2 = book1.clone();> >System.out.println(book2);> >// Check if the two objects are equal> >System.out.println(>'book1 equals book2: '> >+ book1.equals(book2));> >// Get the hash code of the two objects> >System.out.println(>'book1 hash code: '> >+ book1.hashCode());> >System.out.println(>'book2 hash code: '> >+ book2.hashCode());> >// Set book1 to null to trigger garbage collection> >// and finalize method> >book1 =>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) book1 equals book2: true book1 hash code: 1840214527 book2 hash code: 1840214527>