Object Class Java nyelven
Objektum osztály a Java nyelvben jelen van java.lang csomag.
- Minden osztály közvetlenül vagy közvetve az Object osztályból származik. Ha egy osztály nem bővít más osztályt, akkor az a közvetlen gyermekosztálya Java objektum osztály és ha kiterjeszti egy másik osztályt, akkor közvetett módon származik.
- Az Object osztály számos módszert biztosít, mint pl toString()equals() hashCode() és még sokan mások.
- Az Object osztály az öröklési hierarchia gyökereként működik bármely Java programban.
Itt használjuk a toString() és hashCode() Object osztály metódusai hogy egyéni karakterlánc-ábrázolást biztosítson egy osztály számára .
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 ()); } }
Kimenet
Person{name:'Geek'} 321001045 Magyarázat: A fenti példában felülírjuk a toString() módszer biztosítására a a Person osztály egyéni karakterlánc-reprezentációja és használja a hashCode() módszer az objektum alapértelmezett hash kódértékének megjelenítésére.
Objektumosztály módszerei
Az Object osztály több metódust kínál, amelyek a következők:
- toString() metódus
- hashCode() metódus
- egyenlő(Object obj) metódus
- finalize() metódus
- getClass() metódus
- clone() metódus
- vár() notify() notifyAll() (párhuzamossági metódusok)
1. toString() metódus
A toString() egy objektum karakterlánc-ábrázolását adja meg, és egy objektum karakterláncsá alakítására szolgál. Az Object osztály alapértelmezett toString() metódusa egy karakterláncot ad vissza, amely annak az osztálynak a nevéből, amelynek az objektum egy példánya, a „@” at-jelből és az objektum hash kódjának előjel nélküli hexadecimális reprezentációjából áll.
Jegyzet: Amikor megpróbálunk bármilyen objektum hivatkozást kinyomtatni, akkor a belső toString() metódus meghívódik.
Példa:
public class Diák {
public String toString() {
return 'Diák objektum';
}
}
Magyarázat: A toString() metódus felülbírálva a Student objektum egyéni karakterlánc-reprezentációját adja vissza.
2. hashCode() metódus
A JVM minden objektumhoz egyedi számot generál, amely egy hashkód. Különálló egész számokat ad vissza a különböző objektumokhoz. Egy általános tévhit ezzel a módszerrel kapcsolatban, hogy a hashCode() metódus az objektum címét adja vissza, ami nem helyes. Az objektum belső címét egész számmá alakítja egy algoritmus segítségével. A hashCode() metódus az bennszülött mivel a Java-ban lehetetlen megtalálni egy objektum címét, ezért natív nyelveket, például C/C++-t használ az objektum címének megtalálásához.
A hashCode() metódus használata:
Egy hash értéket ad vissza, amelyet a gyűjtemény objektumaiban keresnek. A JVM (Java Virtual Machine) a hashcode módszert használja, miközben az objektumokat kivonatoláshoz kapcsolódó adatstruktúrákba menti, mint például a HashSet HashMap Hashtable stb. Az objektumok hash kódon alapuló mentésének fő előnye, hogy a keresés egyszerűvé válik.
Jegyzet: Felülbírálása hashCode() módszert úgy kell megtenni, hogy minden objektumhoz egyedi számot generáljunk. Például egy tanulói osztálynál visszaküldhetjük a sz. egy tanulónak a hashCode() metódusból, mivel az egyedi.
Példa:
public class Diák {
int roll;
@Felülbírálás
public int hashCode() {
visszatekercs;
}
}
Magyarázat: A hashCode() metódus felülírva egyéni hash értéket ad vissza a Student objektum tekercsén alapulóan.
3. egyenlő(Object obj) Method
A egyenlő () metódus összehasonlítja az adott objektumot az aktuális objektummal. Javasoljuk, hogy felülbírálja ezt a módszert az egyéni egyenlőségi feltételek meghatározásához.
Jegyzet: Általában felül kell írni a hashCode() metódust, amikor ezt a metódust felülbírálják, hogy fenntartsák a hashCode metódusra vonatkozó általános szerződést, amely kimondja, hogy az egyenlő objektumoknak azonos hash kódokkal kell rendelkezniük.
Példa:
public class Diák {
int roll;
@Felülbírálás
public logikai egyenlő (Object o) {
if (O instanceof Student) {
return this.roll == ((tanuló) o).tekercs;
}
return false;
}
}
Magyarázat: A egyenlő () módszer felülírva az összehasonlításhoz tekercs két Student objektum között.
4. getClass() metódus
A getClass() metódus visszaadja az „ez” objektum osztályobjektumát, és az objektum tényleges futási osztályának lekérésére szolgál. Az osztály metaadatainak lekérésére is használható. A visszaadott osztály objektum az az objektum, amelyet a képviselt osztály statikus szinkronizált metódusai zárolnak. Mivel végleges, ezért nem írjuk felül.
Példa:
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 ()); } }
Kimenet
Class of Object o is: java.lang.String
Magyarázat: A getClass() metódus az „o” objektum futási osztályának kinyomtatására szolgál.
Jegyzet: A .class fájl betöltése után a JVM létrehoz egy ilyen típusú objektumot java.lang.Class a Heap területen. Ezt az osztályobjektumot használhatjuk osztály szintű információk lekérésére. Széles körben használják ben Visszaverődés
5. finalize() metódus
A véglegesít() metódus közvetlenül az objektum szemétgyűjtése előtt kerül meghívásra. Úgy hívják a Szemétgyűjtő egy objektumon, amikor a szemétgyűjtő megállapítja, hogy nincs több hivatkozás az objektumra. Felül kell írni a finalize() metódust a rendszererőforrások eltávolításához, tisztítási tevékenységek végrehajtásához és a memóriaszivárgások minimalizálásához. Például a Servlet objektumok megsemmisítése előtt mindig a finalize metódusnak hívják a munkamenet tisztítási tevékenységeinek végrehajtásához.
Jegyzet: A véglegesítési módszert justnak nevezzük egyszer egy objektumon, még akkor is, ha az objektum többször is jogosult szemétgyűjtésre.
Példa:
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' ); } }
Kimenet
1510467688 end finalize method called
Magyarázat: A véglegesít() metódus közvetlenül az objektum szemétgyűjtése előtt kerül meghívásra.
6. klón() metódus
A klón() metódus létrehoz és visszaad egy új objektumot, amely az aktuális objektum másolata.
Példa:
public class Könyv eszközök Klónozható {
privát String t; //cím
public Book(t karakterlánc) {
this.t = t;
}
@Felülbírálás
public Object clone() CloneNotSupportedException {
return super.clone();
}
}
Magyarázat: A klón() metódus felülírásra kerül a klónozott másolat visszaadásához Könyv tárgy .
7. Egyidejűségi módszerek: wait() notify() és notifyAll()
Ezek a módszerek kapcsolódnak szál Kommunikáció Java nyelven . Arra használják, hogy a szálakat várakozzanak, vagy értesítsenek másokat a párhuzamos programozás során.
Példa az összes objektumosztály-metódus használatára Java-ban
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 (); } }
Kimenet
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
Magyarázat: A fenti példa a használatát mutatja be toString() egyenlő() hashCode() és klón() módszerek a Könyvosztály .