logo

Třída objektů v Javě

Třída objektu v Javě je přítomen v java.lang balík.

shehzad poonawala
  • Každá třída je přímo nebo nepřímo odvozena od třídy Object. Pokud třída nerozšiřuje žádnou jinou třídu, pak je přímo podřízenou třídou třídy Třída Java Object a pokud rozšiřuje další třídu, pak je nepřímo odvozena.
  • Třída Object poskytuje několik metod, jako např toString()se rovná() hashCode() a mnoho dalších.
  • Třída Object funguje jako kořen hierarchie dědičnosti v jakémkoli programu Java.

Zde používáme toString() a hashCode() metody třídy Object poskytnout vlastní řetězcovou reprezentaci pro třídu .



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 

Vysvětlení: Ve výše uvedeném příkladu přepíšeme toString() způsob poskytování a vlastní řetězcová reprezentace třídy Person a používat hashCode() metoda k zobrazení výchozí hodnoty hash kódu objektu.

Metody tříd objektů

Třída Object poskytuje několik metod, které jsou následující:

  • metoda toString().
  • metoda hashCode().
  • metoda equals(Object obj).
  • metoda finalize().
  • metoda getClass().
  • metoda clone().
  • wait() notify() notifyAll() (Metody souběžnosti)
Metody tříd objektů v Javě' title=

1. Metoda toString().

The toString() poskytuje String reprezentaci objektu a používá se k převodu objektu na String. Výchozí metoda toString() pro třídu Object vrací řetězec sestávající z názvu třídy, jejíž instancí je objekt, znaku zavináče `@' a hexadecimální reprezentace hašovacího kódu objektu bez znaménka.



Poznámka: Kdykoli se pokusíme vytisknout jakoukoli referenci na objekt, je interně zavolána metoda toString().

Příklad:

public class Student {



public String toString() {

return 'Studentský objekt';

}

}

Vysvětlení: Metoda toString() je přepsána, aby vrátila vlastní řetězcovou reprezentaci objektu Student.

2. Metoda hashCode().

Pro každý objekt JVM generuje jedinečné číslo, což je hashcode. Vrací odlišná celá čísla pro odlišné objekty. Obvyklá mylná představa o této metodě je, že metoda hashCode() vrací adresu objektu, která není správná. Převádí vnitřní adresu objektu na celé číslo pomocí algoritmu. Metoda hashCode() je rodák protože v Javě je nemožné najít adresu objektu, takže k nalezení adresy objektu používá nativní jazyky jako C/C++.

Použití metody hashCode():

Vrací hodnotu hash, která se používá k vyhledávání objektů v kolekci. JVM (Java Virtual Machine) používá metodu hashcode při ukládání objektů do datových struktur souvisejících s hashováním, jako je HashSet HashMap Hashtable atd. Hlavní výhodou ukládání objektů na základě hash kódu je snadné vyhledávání. 

Poznámka: Přepsat z hashCode() metoda musí být provedena tak, že pro každý objekt vygenerujeme jedinečné číslo. Například pro třídu Student můžeme vrátit číslo role. studenta z metody hashCode(), protože je jedinečná. 

Příklad:

public class Student {

vnitřní role;

@Přepsat

public int hashCode() {

zpětný válec;

}

}

Vysvětlení: The hashCode() metoda je přepsána, aby vrátila vlastní hodnotu hash na základě hodu objektu Student.

3. Metoda se rovná(Objekt objektu).

The rovná se() metoda porovná daný objekt s aktuálním objektem. Chcete-li definovat vlastní podmínky rovnosti, doporučujeme tuto metodu přepsat.

Poznámka: Obecně je nutné přepsat hashCode() vždy, když je tato metoda přepsána, aby byla zachována obecná smlouva pro metodu hashCode, která uvádí, že stejné objekty musí mít stejné hash kódy. 

Příklad:

public class Student {

vnitřní role;


@Přepsat

public boolean se rovná(Objekt o) {

if (o instanceof Student) {

return this.roll == ((Student) o).roll;

}

vrátit false;

}

}

Vysvětlení: The rovná se() metoda je přepsána pro porovnání role mezi dvěma Studentskými objekty.

4. metoda getClass().

The getClass() metoda vrací objekt třídy 'toto' objektu a používá se k získání skutečné runtime třídy objektu. Lze jej také použít k získání metadat této třídy. Vrácený objekt Class je objekt, který je uzamčen statickými synchronizovanými metodami reprezentované třídy. Protože je konečná, nepřepíšeme ji.

Pří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 

Vysvětlení: The getClass() metoda se používá k tisku runtime třídy objektu 'o'.

Poznámka: Po načtení souboru .class JVM vytvoří objekt typu java.lang.Class v oblasti haldy. Tento objekt třídy můžeme použít k získání informací na úrovni třídy. Je široce používán v Odraz  

5. metoda finalize().

The dokončit() metoda je volána těsně předtím, než je objekt shromážděn. Říká se tomu Sběratel odpadků na objektu, když garbage collector určí, že na objekt již nejsou žádné odkazy. Měli bychom přepsat metodu finalize(), abychom zlikvidovali systémové prostředky, provedli činnosti čištění a minimalizovali úniky paměti. Například před zničením webového kontejneru objektů Servlet se vždy nazývá metoda finalizace, která provádí čištění relace. 

Poznámka: Metoda finalizace se nazývá just jednou na objektu, i když je tento objekt způsobilý pro úklid vícekrát. 

Pří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 

Vysvětlení: The dokončit() metoda je volána těsně předtím, než je objekt shromážděn.

6. metoda clone(). 

The klon() metoda vytvoří a vrátí nový objekt, který je kopií aktuálního objektu.

Příklad:

public class Kniha implementuje Cloneable {

private String t; //titul


veřejná kniha (řetězec t) {

this.t = t;

}

@Přepsat

public Object clone() vyvolá CloneNotSupportedException {

return super.clone();

}

}

Vysvětlení: The klon() metoda je přepsána, aby vrátila klonovanou kopii souboru Knižní objekt .

7. Souběžné metody: wait() notify() a notifyAll()

Tyto metody souvisí s vlákno Komunikace v Javě . Používají se k tomu, aby vlákna čekala nebo aby upozornila ostatní při souběžném programování.

Příklad použití všech metod tříd objektů v Javě

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 

Vysvětlení: Výše uvedený příklad demonstruje použití toString() equals() hashCode() a klon() metody v Knižní třída .