logo

Trieda objektov v jazyku Java

Trieda objektu v jazyku Java je prítomný v java.lang balík.

nájsť v mape c++
  • Každá trieda je priamo alebo nepriamo odvodená od triedy Object. Ak trieda nerozširuje žiadnu inú triedu, potom je to priama podriadená trieda Trieda Java Object a ak rozširuje ďalšiu triedu, potom je nepriamo odvodená.
  • Trieda Object poskytuje viacero metód ako napr toString()rovná sa() hashCode() a mnoho ďalších.
  • Trieda Object funguje ako koreň hierarchie dedičnosti v akomkoľvek programe Java.

Tu používame toString() a hashCode() metódy triedy Object poskytnúť vlastnú reťazcovú reprezentáciu pre triedu .



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

Výstup
Person{name:'Geek'} 321001045 

Vysvetlenie: Vo vyššie uvedenom príklade prepíšeme toString() spôsob poskytovania a vlastnú reťazcovú reprezentáciu triedy Osoba a použiť hashCode() metóda na zobrazenie predvolenej hodnoty hash kódu objektu.

Metódy tried objektov

Trieda Object poskytuje viacero metód, ktoré sú nasledovné:

  • metóda toString().
  • metóda hashCode().
  • rovná sa (Object objekt) metóda
  • metóda finalize().
  • getClass() metóda
  • metóda clone().
  • wait() notify() notifyAll() (metódy súbežnosti)
Metódy tried objektov v jazyku Java' title=

1. Metóda toString().

The toString() poskytuje reťazcovú reprezentáciu objektu a používa sa na konverziu objektu na reťazec. Predvolená metóda toString() pre triedu Object vracia reťazec pozostávajúci z názvu triedy, ktorej je objekt inštanciou, zavináča `@' a hexadecimálnej reprezentácie hašovacieho kódu objektu bez znamienka.



Poznámka: Kedykoľvek sa pokúsime vytlačiť akýkoľvek odkaz na objekt, potom sa interne zavolá metóda toString().

Príklad:

public class Študent {



public String toString() {

return 'Objekt študenta';

}

}

Vysvetlenie: Metóda toString() je prepísaná, aby vrátila vlastnú reťazcovú reprezentáciu objektu Student.

2. Metóda hashCode().

Pre každý objekt JVM generuje jedinečné číslo, ktorým je hashcode. Vracia odlišné celé čísla pre odlišné objekty. Bežnou mylnou predstavou o tejto metóde je, že metóda hashCode() vracia adresu objektu, ktorá nie je správna. Konvertuje internú adresu objektu na celé číslo pomocou algoritmu. Metóda hashCode() je natívny pretože v Jave nie je možné nájsť adresu objektu, takže na nájdenie adresy objektu používa natívne jazyky ako C/C++.

Použitie metódy hashCode():

Vracia hodnotu hash, ktorá sa používa na vyhľadávanie objektov v kolekcii. JVM (Java Virtual Machine) používa metódu hashcode pri ukladaní objektov do dátových štruktúr súvisiacich s hashovaním, ako je HashSet HashMap Hashtable atď. Hlavnou výhodou ukladania objektov na základe hash kódu je, že vyhľadávanie sa stáva jednoduchým. 

Poznámka: Prepísať z hashCode() metódu je potrebné urobiť tak, že pre každý objekt vygenerujeme jedinečné číslo. Napríklad pre triedu Študent môžeme vrátiť rolku č. študenta z metódy hashCode(), keďže je jedinečná. 

Príklad:

public class Študent {

int roll;

@Prepísať

public int hashCode() {

spätný kotúč;

}

}

Vysvetlenie: The hashCode() metóda je prepísaná, aby vrátila vlastnú hodnotu hash na základe hodu objektu Študent.

3. Metóda rovná sa (Object obj).

The rovná sa() metóda porovnáva daný objekt s aktuálnym objektom. Na definovanie vlastných podmienok rovnosti sa odporúča prepísať túto metódu.

Poznámka: Vo všeobecnosti je potrebné prepísať hashCode() vždy, keď je táto metóda prepísaná, aby sa zachovala všeobecná zmluva pre metódu hashCode, ktorá uvádza, že rovnaké objekty musia mať rovnaké hash kódy. 

Príklad:

public class Študent {

int roll;


@Prepísať

public boolean rovná sa(Objekt o) {

if (o instanceof Student) {

return this.roll == ((Študent) o).roll;

}

vrátiť nepravdu;

}

}

Vysvetlenie: The rovná sa() metóda je prepísaná na porovnanie rolovať medzi dvoma študentskými objektmi.

4. metóda getClass().

The getClass() metóda vracia objekt triedy 'toto' objektu a používa sa na získanie skutočnej runtime triedy objektu. Môže sa použiť aj na získanie metadát tejto triedy. Vrátený objekt Class je objekt, ktorý je uzamknutý statickými synchronizovanými metódami reprezentovanej triedy. Keďže je konečný, neprepíšeme ho.

Príklad:

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

Výstup
Class of Object o is: java.lang.String 

Vysvetlenie: The getClass() metóda sa používa na tlač runtime triedy objektu 'o'.

Poznámka: Po načítaní súboru .class JVM vytvorí objekt typu java.lang.Class v oblasti Haldy. Tento objekt triedy môžeme použiť na získanie informácií na úrovni triedy. Je široko používaný v Reflexia  

5. metóda finalize().

The finalizovať () metóda sa volá tesne predtým, ako sa objekt pozbiera. Nazýva sa to Zberač odpadu na objekte, keď zberač odpadu zistí, že už neexistujú žiadne odkazy na objekt. Mali by sme prepísať metódu finalize(), aby sme odstránili systémové prostriedky, vykonali činnosti čistenia a minimalizovali úniky pamäte. Napríklad pred zničením servletových objektov sa webový kontajner vždy nazýva finalizačná metóda na vykonanie čistiacich činností relácie. 

Poznámka: Metóda finalizácie sa nazýva just raz na objekt, aj keď je tento objekt vhodný na zber odpadu viackrát. 

Príklad:

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

Výstup
1510467688 end finalize method called 

Vysvetlenie: The finalizovať () metóda sa volá tesne predtým, ako sa objekt pozbiera.

6. metóda clone(). 

The klon() metóda vytvorí a vráti nový objekt, ktorý je kópiou aktuálneho objektu.

Príklad:

public class Book implements Cloneable {

private String t; //názov


verejná kniha (reťazec t) {

this.t = t;

}

@Prepísať

public Object clone() vyvolá CloneNotSupportedException {

return super.clone();

}

}

Vysvetlenie: The klon() metóda je prepísaná, aby vrátila klonovanú kópiu súboru Knižný predmet .

7. Metódy súbežnosti: wait() notify() a notifyAll()

Tieto metódy súvisia s vlákno Komunikácia v jazyku Java . Používajú sa na to, aby vlákna čakali alebo upozornili ostatných pri súbežnom programovaní.

Príklad použitia všetkých metód tried objektov v jazyku 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();  } } 

Výstup
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 

Vysvetlenie: Vyššie uvedený príklad demonštruje použitie toString() equals() hashCode() a klon() metódy v Knižná trieda .